IDBCursor: advance() 方法

注意:此功能在 Web Workers 中可用。

advance() 方法是 IDBCursor 接口的方法,它设置游标应向前移动的次数。

语法

js
advance(count)

参数

count

游标向前移动的次数。

返回值

无 (undefined).

异常

此方法可能会引发以下类型的 DOMException

TransactionInactiveError DOMException

如果此 IDBCursor 的事务处于非活动状态,则抛出此异常。

TypeError

如果传递给 count 参数的值为零或负数,则抛出此异常。

InvalidStateError DOMException

如果游标当前正在迭代或已迭代到其末尾,则抛出此异常。

示例

在这个简单的片段中,我们创建了一个事务,检索了一个对象存储,然后使用游标遍历对象存储中的记录。在这里,我们使用 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①

浏览器兼容性

BCD 表格仅在启用了 JavaScript 的浏览器中加载。

另请参阅