Я использую Web SQL API для хранения некоторой информации на странице; Я хотел бы сохранить состояние страницы, когда пользователь закрывает страницу или уходит, поэтому я начинаю с:
window.onunload = function () {
db.transaction(function (tx) {
executeSql("INSERT INTO State (foo) VALUES (?)", [foo]);
});
};
Однако это асинхронный процесс, поэтому он не завершается до того, как страница исчезнет.
Я решаю это неудовлетворительно, добавляя (неискреннее, поскольку это еще не произошло) alert("Saved!");
в конце моего window.onunload
, что задерживает выгрузку до тех пор, пока у БД не появится шанс сделать свое дело, но я Я бы предпочел не иметь этого предупреждения, если бы я мог избежать этого.
Есть идеи? Мне нужно на время заблокировать поток, вызывающий функцию onunload
, что и делает оповещение.
(Кстати, чтобы исключить любые предположения о том, что я использую синхронную версию openDatabaseSync
, этот API предназначен и реализован только для веб-работников, а не для объекта Window.)