IDBRequest

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.

* Some parts of this feature may have varying levels of support.

Note: This feature is available in Web Workers.

Giao diện IDBRequest của IndexedDB API cung cấp quyền truy cập vào kết quả của các yêu cầu bất đồng bộ tới cơ sở dữ liệu và các đối tượng cơ sở dữ liệu bằng các thuộc tính trình xử lý sự kiện. Mọi thao tác đọc và ghi trên cơ sở dữ liệu đều được thực hiện thông qua một request.

Ban đầu, đối tượng request không chứa bất kỳ thông tin nào về kết quả của thao tác. Khi thông tin trở nên khả dụng, một sự kiện sẽ được kích hoạt trên request và thông tin đó sẽ có thể truy cập qua các thuộc tính của thể hiện IDBRequest.

Mọi thao tác bất đồng bộ đều trả về ngay một thể hiện IDBRequest. Mỗi request có một readyState được đặt là trạng thái 'pending'; trạng thái này chuyển sang 'done' khi request hoàn tất hoặc thất bại. Khi trạng thái là done, mọi request đều trả về một result và một error, đồng thời một sự kiện được kích hoạt trên request. Khi trạng thái vẫn là pending, mọi nỗ lực truy cập result hoặc error sẽ ném ra ngoại lệ InvalidStateError.

Nói đơn giản, mọi phương thức bất đồng bộ đều trả về một đối tượng request. Nếu request hoàn tất thành công, kết quả sẽ có sẵn qua thuộc tính result và một sự kiện báo thành công sẽ được kích hoạt trên request (success). Nếu xảy ra lỗi trong khi thực hiện thao tác, ngoại lệ sẽ có sẵn qua thuộc tính error và một sự kiện lỗi sẽ được kích hoạt (error).

Giao diện IDBOpenDBRequest được dẫn xuất từ IDBRequest.

EventTarget IDBRequest

Thuộc tính thể hiện

Cũng kế thừa các thuộc tính từ EventTarget.

IDBRequest.error Read only

Trả về một DOMException trong trường hợp request không thành công, cho biết lỗi đã xảy ra là gì.

IDBRequest.result Read only

Trả về kết quả của request. Nếu request chưa hoàn tất, kết quả sẽ không khả dụng và ngoại lệ InvalidStateError sẽ được ném ra.

IDBRequest.source Read only

Nguồn của request, chẳng hạn một IDBIndex hoặc IDBObjectStore. Nếu không có nguồn nào tồn tại, ví dụ khi gọi IDBFactory.open, thuộc tính này trả về null.

IDBRequest.readyState Read only

Trạng thái của request. Mọi request đều bắt đầu ở trạng thái pending. Trạng thái sẽ chuyển thành done khi request hoàn tất thành công hoặc khi xảy ra lỗi.

IDBRequest.transaction Read only

Transaction của request. Thuộc tính này có thể là null đối với một số request, ví dụ các request được trả về từ IDBFactory.open trừ khi cần nâng cấp. Khi đó bạn chỉ đang kết nối tới cơ sở dữ liệu, nên không có transaction nào để trả về.

Phương thức thể hiện

Không có phương thức, nhưng kế thừa các phương thức từ EventTarget.

Sự kiện

Nghe các sự kiện này bằng addEventListener() hoặc bằng cách gán trình xử lý sự kiện vào thuộc tính oneventname của giao diện này.

error

Được kích hoạt khi một lỗi làm request thất bại.

success

Được kích hoạt khi IDBRequest thành công.

Ví dụ

Trong đoạn mã sau, chúng ta mở một cơ sở dữ liệu bất đồng bộ và tạo một request; các hàm onerroronsuccess được dùng để xử lý trường hợp thành công và lỗi. Để xem một ví dụ hoạt động đầy đủ, hãy xem ứng dụng To-do Notifications của chúng tôi (xem ví dụ trực tiếp).

js
let db;

// Mở cơ sở dữ liệu của chúng ta
const DBOpenRequest = window.indexedDB.open("toDoList", 4);

// hai trình xử lý sự kiện này phản ứng khi cơ sở dữ liệu
// được mở thành công hoặc không thành công
DBOpenRequest.onerror = (event) => {
  note.appendChild(document.createElement("li")).textContent =
    "Error loading database.";
};

DBOpenRequest.onsuccess = (event) => {
  note.appendChild(document.createElement("li")).textContent =
    "Database initialized.";

  // lưu kết quả mở cơ sở dữ liệu
  db = DBOpenRequest.result;
};

Thông số kỹ thuật

Specification
Indexed Database API 3.0
# request-api

Tương thích trình duyệt

Xem thêm