2016-08-11 56 views
0

我需要在我的Chrome擴展中製作3個新選項卡,並在每個選項卡創建之間延遲幾秒鐘,但是當我使用chrome.tabs.create一個for循環for(i=0;i<3;i++)setTimeout(function()像這樣我需要延遲打開從Chrome擴展的設置數量的選項卡

for(i=0;i<3;i++){ 
    setTimeout(function() { 
    search(); 
}, 5000); 

它只是等待超時完成,然後打開所有3個標籤一次。我曾看過Chrome extension: open tabs with delay,但情況不同。

回答

1

現在你告訴瀏覽器在5秒後打開所有三個標籤。

如果您想他們打開了一個又一個,你必須通過你的迭代乘以超時(+1,除非你想第一個選項卡立即打開),像這樣:

for(i=0; i<3; i++){ 
    setTimeout(function() { 
     search(); 
    }, 5000 * (i + 1)); 
} 
+0

這會在第一個選項卡打開之前引入延遲,但在創建一個選項卡後它不會繼續執行。我不知道這是否與我的搜索功能有關,或者問題是由於隨後關閉的按鈕激活了循環而造成的。 [Code](http://pastebin.com/qRTp60Gq) –

+0

@JoeSchroedl,這是因爲你的'search()'函數執行時間過長,'setTimeout'表示在任意數量的毫秒後將任務添加到隊列中。如果隊列爲空,則代碼立即執行;如果隊列不是空的(你的search()函數仍在運行),代碼必須等待輪到它。 –

+0

這可能是這樣,但是會佔用大量隊列以致代碼不會繼續?我在循環內嘗試了更簡單的函數,它們都只發生一次。 –

相關問題