IDBCursor: continue() 方法

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

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

continue() 方法是 IDBCursor 接口的一部分,它将游标沿着其方向前进到下一个位置,指向键与可选的键参数匹配的条目。如果未指定键,则游标将根据其方向前进到紧邻的下一个位置。

语法

js
continue()
continue(key)

参数

key 可选

用于定位游标的键。

返回值

无(undefined)。

异常

此方法可能会抛出以下类型之一的DOMException

TransactionInactiveError DOMException

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

DataError DOMException

如果键参数满足以下任一条件,则会抛出异常

  • 键不是有效键。
  • 键小于或等于当前游标位置,并且游标的方向为 nextnextunique
  • 键大于或等于当前游标位置,并且当前游标的方向为 prevprevunique
InvalidStateError DOMException

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

示例

在这个简单的代码片段中,我们创建了一个事务,检索了一个对象存储,然后使用游标遍历对象存储中的所有记录。游标不需要我们根据键来选择数据;我们可以直接获取所有数据。另外请注意,在循环的每一次迭代中,您都可以通过 cursor.value.foo 从游标对象下的当前记录中获取数据。有关完整的可运行示例,请参阅我们的 IDBCursor 示例实时查看示例)。

js
function displayData() {
  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.continue();
    } else {
      console.log("Entries all displayed.");
    }
  };
}

规范

规范
Indexed Database API 3.0
# ref-for-dom-idbcursor-continue①

浏览器兼容性

另见