Firefox扩展中setTimeout的竞争条件?

Firefox扩展中setTimeout的竞争条件?,firefox,firefox-addon,race-condition,Firefox,Firefox Addon,Race Condition,在firefox扩展中调用setTimeout时会发生什么?是否存在可以同时运行多个回调的情况 我的firefox扩展包含一系列我想要截图的URL。My extension打开5个选项卡,并将这些选项卡的URL设置为数组中的前5个URL。一旦页面在tab N中加载完毕,我想等待30秒,截屏,然后从数组中弹出下一个URL并将其加载到tab N中。该过程会重复进行,直到URL列表为空 如何确保每个URL只处理一次?如果我是用java写的,我会同步所有对URL列表的访问。如何在Firefox扩展中实现

在firefox扩展中调用setTimeout时会发生什么?是否存在可以同时运行多个回调的情况

我的firefox扩展包含一系列我想要截图的URL。My extension打开5个选项卡,并将这些选项卡的URL设置为数组中的前5个URL。一旦页面在tab N中加载完毕,我想等待30秒,截屏,然后从数组中弹出下一个URL并将其加载到tab N中。该过程会重复进行,直到URL列表为空


如何确保每个URL只处理一次?如果我是用java写的,我会同步所有对URL列表的访问。如何在Firefox扩展中实现这一点?

Javascript完全是单线程的(除了新的Workers功能,它是独立的)


没有两个回调可以同时运行。

对于在chrome浏览器中运行的javascript,这是真的吗?我正在运行特权javascript,作为firefox扩展的一部分。代码没有在任何特定选项卡中运行,也不是任何HTML文档的一部分。@Rob:我有理由肯定它是。@sdwilsh:您有引用吗?@sdwilsh:单线程规则也适用于XMLHttpRequest吗?如果我异步发送多个调用,一次会发出多个调用,还是它们也会排队?@Rob:请求将并行发送,但回调将在UI线程上按顺序执行。