Как узнать, когда IndexedDB был закрыт вручную?

Мне нужно создать хранилище объектов, когда пройден этап обновления базы данных. Для этого я пытаюсь закрыть и снова открыть базу данных с новой версией и создать хранилище в событии onupgradeneeded.

В IndexedDB есть метод close(), который

Немедленно возвращается и закрывает соединение с базой данных в отдельном потоке.

Однако он не возвращает IDBRequest, как другие подобные методы. Этот метод ожидает завершения запущенных транзакций, поэтому закрытие может быть отложено. Мне нужно знать о событии закрытия, чтобы я мог снова открыть его. Существует событие onclose, которое не срабатывает , потому что соединение не закрывается неожиданно:

Запускается, когда соединение с базой данных неожиданно закрывается. Также доступно через свойство onclose.

Я не хочу быть грубым, чтобы периодически проверять onblocked событие при попытках открытия. В моих тестах IndexedDB.open() успешно повторно открывает базу данных, но я не могу запустить ее в производство, если это не гарантировано. В спецификациях w3 пишут про флаг готовности< /em>, но я не могу найти его в консоли браузера.


person Jan Turoň    schedule 16.04.2021    source источник


Ответы (1)


Я не думаю, что вы можете? Если я правильно вас понял, возможно, ответ Джошуа Белла на Как проверить, открыт ли экземпляр indexedDB? помогает ответить на ваш вопрос.

person Josh    schedule 17.04.2021