IDBTransaction: onabort vs onerror

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

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

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

Consider using IDBTransaction.onabort instead to handle non- successful completion of the transaction.

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

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
171
1

Ответы 1

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

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

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

просто чтобы убедиться, что я правильно понял: предполагая, что я использую обещание then и catch как параллель с успехом / неудачей транзакции: onSuccess - это параллель с then, а onAbort - это параллель с catch, верно? (где onerror относится к запросу, поэтому он не является частью того же цикла)

shirbr510 14.03.2021 14:08

Не совсем. Для запроса onsuccess похож на then (), а onerror похож на catch (). Для транзакции oncomplete похож на then (), а onabort похож на catch ().

Joshua Bell 15.03.2021 17:15

Другие вопросы по теме

Тренируйтесь на собственном наборе данных. Mask_RCNN Ресурс исчерпан: OOM при выделении
Обработка ошибок, при которых пользователю предлагается ввести только целое число больше 1
Какой самый идиоматичный способ объединить два типа ошибок?
Лучший способ добавить настраиваемое исключение для весеннего загрузочного кода
Почему можно попытаться поймать вызов async-await?
Код библиотеки / пакета Python работает вне библиотеки, но попытка запуска внутри библиотеки дает ошибку импорта
Код ошибки неожиданного идентификатора JavaScript
Получение данных о ценах из YahooFinance вызывает: AttributeError объект 'nonetype' не имеет атрибута 'text'
IOS RxSwift, как предотвратить удаление последовательности (выбросить ошибку)?
Как я могу убедиться, что исключения во время синтаксического анализа приводят к тому же ответу, что и (настраиваемый) ответ, возвращаемый при сбоях проверки?