IDBCursor: advance() 方法

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

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

advance() 方法是 IDBCursor 介面的一部分,用於設定遊標應該向前移動的次數。

語法

js
advance(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①

瀏覽器相容性

另見