Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Firefox浏览器上可靠地完成异步操作?_Javascript_Firefox_Asynchronous_Firefox Addon - Fatal编程技术网

Javascript 如何在Firefox浏览器上可靠地完成异步操作?

Javascript 如何在Firefox浏览器上可靠地完成异步操作?,javascript,firefox,asynchronous,firefox-addon,Javascript,Firefox,Asynchronous,Firefox Addon,我正在为Firefox编写一个浏览器扩展,它使用IndexedDB保存本地数据。当浏览器关闭时,我想将最新的数据写入我的IndexedDB。然而,IndexedDB是完全异步的,而且Firefox似乎在异步写入完成之前关闭。(我可以看到数据库文件正在创建,而日志文件在浏览器关闭时被丢弃。)是否有方法在Firefox关闭时可靠地完成异步操作?您可以使用eventlistener(您可能已经有了它来写入数据库)来侦听窗口关闭事件,直到您完成存储,然后在回调上关闭窗口 window.addEventL

我正在为Firefox编写一个浏览器扩展,它使用IndexedDB保存本地数据。当浏览器关闭时,我想将最新的数据写入我的IndexedDB。然而,IndexedDB是完全异步的,而且Firefox似乎在异步写入完成之前关闭。(我可以看到数据库文件正在创建,而日志文件在浏览器关闭时被丢弃。)是否有方法在Firefox关闭时可靠地完成异步操作?

您可以使用eventlistener(您可能已经有了它来写入数据库)来侦听窗口关闭事件,直到您完成存储,然后在回调上关闭窗口

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,但我不相信它会很快得到解决。