IDBRequest
Базовая линия Широко доступна *
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с сентября 2021 года.
* Некоторые части этой функции могут иметь различный уровень поддержки.
Примечание: Эта функция доступна в Потоках веб-приложений.
Интерфейс IDBRequest API IndexedDB предоставляет доступ к результатам асинхронных запросов к базам данных и объектам баз данных с использованием атрибутов обработчиков событий. Каждая операция чтения и записи в базе данных выполняется с помощью запроса.
Объект запроса изначально не содержит никакой информации о результате операции, но как только информация становится доступной, на запросе генерируется событие, и информация становится доступной через свойства экземпляра IDBRequest.
Все асинхронные операции немедленно возвращают экземпляр IDBRequest. Каждый запрос имеет состояние readyState, которое устанавливается в 'pending' состояние; оно меняется на 'done' при завершении или ошибке запроса. Когда состояние устанавливается в done, каждый запрос возвращает result и error, и на запросе генерируется событие. Когда состояние всё ещё pending, любая попытка доступа к result или error вызывает исключение InvalidStateError.
Проще говоря, все асинхронные методы возвращают объект запроса. Если запрос успешно завершен, результат становится доступным через свойство result и генерируется событие, указывающее на успех, на запросе (success). Если при выполнении операции произошла ошибка, исключение становится доступным через свойство error и генерируется событие об ошибке (error).
Интерфейс IDBOpenDBRequest наследуется от IDBRequest.
Свойства экземпляра
Также наследует свойства от EventTarget.
-
IDBRequest.errorТолько для чтения -
Возвращает
DOMExceptionв случае неудачного запроса, указывая, что пошло не так. -
IDBRequest.resultТолько для чтения -
Возвращает результат запроса. Если запрос не завершен, результат недоступен, и вызывается исключение
InvalidStateError. -
IDBRequest.sourceТолько для чтения -
Источник запроса, например,
IDBIndexилиIDBObjectStore. Если источник отсутствует (например, при вызовеIDBFactory.open), возвращается null. -
IDBRequest.readyStateТолько для чтения -
Состояние запроса. Каждый запрос начинается в состоянии
pending. Состояние изменяется наdoneпри успешном завершении запроса или при возникновении ошибки. -
IDBRequest.transactionТолько для чтения -
Транзакция для запроса. Это свойство может быть null для некоторых запросов, например, тех, что возвращаются из
IDBFactory.open, если не требуется обновление. (Вы просто подключаетесь к базе данных, поэтому транзакция для возврата отсутствует).
Методы экземпляра
Нет методов, но наследуются методы от EventTarget.
События
Подпишитесь на эти события, используя addEventListener() или назначив обработчик событий свойству oneventname этого интерфейса.
Пример
В следующем фрагменте кода мы асинхронно открываем базу данных и отправляем запрос; функции onerror и onsuccess включены для обработки случаев успеха и ошибки. Для полного рабочего примера обратитесь к нашему приложению Уведомления о задачах (посмотреть пример онлайн.)
let db;
// Let us open our database
const DBOpenRequest = window.indexedDB.open("toDoList", 4);
// these two event handlers act on the database being
// opened successfully, or not
DBOpenRequest.onerror = (event) => {
note.appendChild(document.createElement("li")).textContent =
"Error loading database.";
};
DBOpenRequest.onsuccess = (event) => {
note.appendChild(document.createElement("li")).textContent =
"Database initialized.";
// store the result of opening the database.
db = DBOpenRequest.result;
};
Спецификации
| Спецификация |
|---|
| API баз данных Indexed 3.0 # request-api |
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
IDBRequest |
242–57 | 12 | 1610–16 | 15 | 8 | 2525–57 | 22 | 14 | 8 | 1.51.5–7.0 | 4.4≤37–57 |
error |
23 | 12 | 10 | 15 | 8 | 25 | 22 | 14 | 8 | 1.5 | 4.4 |
error_event |
23 | 12 | 10 | 15 | 8 | 25 | 22 | 14 | 8 | 1.5 | 4.4 |
readyState |
23 | 12 | 10 | 15 | 8 | 25 | 22 | 14 | 8 | 1.5 | 4.4 |
result |
23 | 12 | 10 | 15 | 8 | 25 | 22 | 14 | 8 | 1.5 | 4.4 |
source |
23 | 12 | 10 | 15 | 8 | 25 | 22 | 14 | 8 | 1.5 | 4.4 |
success_event |
23 | 12 | 10 | 15 | 8 | 25 | 22 | 14 | 8 | 1.5 | 4.4 |
transaction |
23 | 12 | 10 | 15 | 8 | 25 | 22 | 14 | 8 | 1.5 | 4.4 |
worker_support |
23 | 12 | 37 | 15 | 10 | 25 | 37 | 14 | 10 | 1.5 | 4.4 |
См. также
- Использование IndexedDB
- Начало транзакций:
IDBDatabase - Использование транзакций:
IDBTransaction - Установка диапазона ключей:
IDBKeyRange - Получение и внесение изменений в данные:
IDBObjectStore - Использование курсоров:
IDBCursor - Пример ссылки: Уведомления о задачах (Просмотр примера в браузере).
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest