IDBCursor: phương thức advance()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Note: This feature is available in Web Workers.
Phương thức advance() của giao diện IDBCursor thiết lập số lần mà con trỏ sẽ di chuyển vị trí của nó về phía trước.
Cú pháp
advance(count)
Tham số
count-
Số lần di chuyển con trỏ về phía trước.
Giá trị trả về
Không có (undefined).
Ngoại lệ
Phương thức này có thể ném ra một DOMException thuộc một trong các kiểu sau:
TransactionInactiveErrorDOMException-
Được ném ra nếu transaction của
IDBCursornày không hoạt động. TypeError-
Được ném ra nếu giá trị truyền vào tham số
countlà 0 hoặc là số âm. InvalidStateErrorDOMException-
Được ném ra nếu con trỏ đang được duyệt hoặc đã duyệt quá phần cuối.
Ví dụ
Trong đoạn ví dụ đơn giản này, chúng ta tạo một transaction, lấy một object store, rồi dùng một con trỏ để duyệt qua các bản ghi trong object store. Ở đây chúng ta dùng cursor.advance(2) để nhảy tiến 2 vị trí mỗi lần, nghĩa là chỉ hiển thị mỗi bản ghi cách nhau một mục. advance() hoạt động tương tự như IDBCursor.continue, ngoại trừ việc nó cho phép nhảy qua nhiều bản ghi cùng lúc, không chỉ luôn sang bản ghi kế tiếp.
Lưu ý rằng ở mỗi vòng lặp, bạn có thể lấy dữ liệu từ bản ghi hiện tại dưới đối tượng con trỏ bằng cursor.value.foo. Để xem ví dụ hoàn chỉnh, hãy xem ví dụ IDBCursor (xem bản chạy trực tiếp).
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.");
}
};
}
Thông số kỹ thuật
| Specification |
|---|
| Indexed Database API 3.0> # ref-for-dom-idbcursor-advance①> |
Tương thích trình duyệt
Xem thêm
- Using IndexedDB
- Bắt đầu transaction:
IDBDatabase - Sử dụng transaction:
IDBTransaction - Thiết lập một phạm vi khóa:
IDBKeyRange - Truy xuất và thay đổi dữ liệu của bạn:
IDBObjectStore - Sử dụng con trỏ:
IDBCursor - Tham chiếu ví dụ: To-do Notifications (xem bản chạy trực tiếp).