2010-08-24 48 views
3

當我在firefox擴展中調用setTimeout時會發生什麼?是否有多個回調可以同時運行的條件?在Firefox擴展中使用setTimeout競爭條件?

我的firefox擴展包含一個我想要截圖的URL數組。我的擴展打開了5個選項卡,並將這些選項卡的URL設置爲數組中的前5個URL。一旦頁面在標籤N中加載完成,我想等待30秒,截取屏幕截圖,然後從陣列中彈出下一個URL並將其加載到標籤N中。該過程會重複,直到URL列表爲空。

如何確保每個URL只處理一次?如果我在java中寫這個,我只會將所有訪問同步到我的URL列表中。我如何在Firefox擴展中實現這一點?

回答

5

Javascript是完全單線程的(除了新的Worker特性,它是單獨的)。

沒有兩個回調可以同時運行。

+1

這對瀏覽器chrome中運行的javascript是否正確?我正在運行特權的JavaScript,作爲Firefox擴展的一部分。代碼不在任何特定的選項卡中運行,並且它不是任何HTML文檔的一部分。 – 2010-08-24 18:06:01

+2

@Rob:我確信它確實如此。 – SLaks 2010-08-24 18:15:04

+2

是的,瀏覽器chrome中運行的代碼也是如此。 – sdwilsh 2010-08-24 18:53:23