Javascript 如何在Firefox浏览器上可靠地完成异步操作?
我正在为Firefox编写一个浏览器扩展,它使用IndexedDB保存本地数据。当浏览器关闭时,我想将最新的数据写入我的IndexedDB。然而,IndexedDB是完全异步的,而且Firefox似乎在异步写入完成之前关闭。(我可以看到数据库文件正在创建,而日志文件在浏览器关闭时被丢弃。)是否有方法在Firefox关闭时可靠地完成异步操作?您可以使用eventlistener(您可能已经有了它来写入数据库)来侦听窗口关闭事件,直到您完成存储,然后在回调上关闭窗口Javascript 如何在Firefox浏览器上可靠地完成异步操作?,javascript,firefox,asynchronous,firefox-addon,Javascript,Firefox,Asynchronous,Firefox Addon,我正在为Firefox编写一个浏览器扩展,它使用IndexedDB保存本地数据。当浏览器关闭时,我想将最新的数据写入我的IndexedDB。然而,IndexedDB是完全异步的,而且Firefox似乎在异步写入完成之前关闭。(我可以看到数据库文件正在创建,而日志文件在浏览器关闭时被丢弃。)是否有方法在Firefox关闭时可靠地完成异步操作?您可以使用eventlistener(您可能已经有了它来写入数据库)来侦听窗口关闭事件,直到您完成存储,然后在回调上关闭窗口 window.addEventL
window.addEventListener("close", function(e) {
e.preventDefault();
//Save your things
//Call window.close on the callback
window.close();
}, false);
还有一个on-stackoverflow,它可以更好地侦听应用程序关闭而不是窗口关闭。但过程也会类似。您是否可以仅在浏览器关闭时同步执行此操作。文档中没有提到异步请求必须在浏览器关闭时完成,但显然他们没有考虑到这一点,因此这将是一个需要修复的错误。IndexedDB的同步接口从未在Firefox中实现过(而且无论如何,只能在Web Worker中使用)。我已经提出了一个关于Mozilla问题的bug,但我不相信它会很快得到解决。