IDBTransaction: onabort vs onerror - PullRequest
       17

IDBTransaction: onabort vs onerror

0 голосов
/ 21 сентября 2018

Когда мы хотим обработать ошибки IndexedDB на уровне транзакции, у нас есть два варианта: обработчики onabort и onerror.

В чем разница между ними?

MDN isnне очень полезно; он только говорит :

Попробуйте вместо этого использовать IDBTransaction.onabort для обработки неудачного завершения транзакции.

Означает ли это, что onerror обработчик будет обрабатывать только подмножество ошибок, которые будут обработаны обработчиком onabort?

1 Ответ

0 голосов
/ 24 сентября 2018

Событие error наступает при неудачном запросе (экземпляр IDBRequest);он всплывает от запроса к транзакции запроса (IDBTransaction) к соединению транзакции (IDBDatabase).В любой момент это может быть зарегистрировано, и поведение по умолчанию (прерывание транзакции) может быть предотвращено при желании, вызывая preventDefault().

Событие abort вызывается при транзакции, которая была прервана.Событие complete запускает транзакцию, которая успешно зафиксирована.

Транзакция может завершиться неудачей по причинам, не связанным с конкретным запросом (например, превышение квоты, ошибка ввода-вывода и т. Д.).Поэтому, если вы хотите знать, что транзакция не удалась, следите за событиями abort.Точно так же, поскольку ваша логика может предотвратить поведение по умолчанию ошибки запроса, прерывающей транзакцию, просмотр события error в транзакции не говорит вам, будет ли транзакция в конечном итоге успешной или нет.

...