语法
js
advance(count)
参数
计数-
向前移动游标的次数。
返回值
无(undefined)。
异常
此方法可能会抛出以下类型之一的DOMException:
TransactionInactiveErrorDOMException-
如果此
IDBCursor的事务处于非活动状态,则抛出此异常。 TypeError-
如果传递给
count参数的值为零或负数,则会抛出此错误。 InvalidStateErrorDOMException-
如果光标当前正在迭代或已迭代到末尾,则抛出此异常。
示例
在这个简单的代码片段中,我们创建了一个事务,检索了一个对象存储,然后使用游标迭代对象存储中的记录。在这里,我们使用 cursor.advance(2) 每次跳过 2 个位置,这意味着只有一半的结果会被显示。advance() 的工作方式与 IDBCursor.continue 类似,不同之处在于它允许您一次跳过多个记录,而不仅仅是总是移到下一个记录。
请注意,在循环的每次迭代中,您都可以使用 cursor.value.foo 从游标对象下的当前记录中获取数据。完整的可运行示例,请参阅我们的 IDBCursor 示例 (实时查看示例)。
js
function advanceResult() {
list.textContent = "";
const transaction = db.transaction(["rushAlbumList"], "readonly");
const objectStore = transaction.objectStore("rushAlbumList");
objectStore.openCursor().onsuccess = (event) => {
const cursor = event.target.result;
if (cursor) {
const listItem = document.createElement("li");
listItem.textContent = `${cursor.value.albumTitle}, ${cursor.value.year}`;
list.appendChild(listItem);
cursor.advance(2);
} else {
console.log("Every other entry displayed.");
}
};
}
规范
| 规范 |
|---|
| Indexed Database API 3.0 # ref-for-dom-idbcursor-advance① |
浏览器兼容性
加载中…
另见
- 使用 IndexedDB
- 开始事务:
IDBDatabase - 使用事务:
IDBTransaction - 设置键的范围:
IDBKeyRange - 检索和修改数据:
IDBObjectStore - 使用游标:
IDBCursor - 参考示例:待办事项通知(查看实时示例)。