在Firefox扩展中使用setTimeout的竞争条件?

Rob*_*ell 3 firefox firefox-addon race-condition

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

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

如何确保每个URL只处理一次?如果我在java中写这个,我只会同步所有访问我的URL列表.如何在Firefox扩展程序中实现此目的?

SLa*_*aks 5

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

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

  • @Rob:我有理由相信它确实如此. (2认同)
  • 是的,对于在浏览器chrome中运行的代码也是如此. (2认同)