2011-05-07 88 views
1

我有一個循環,在循環這樣如何產生延遲效應

$.each(requiredCities,function(keya,valb){ 
$.each(requiredKeyWords,function(keya,valb){ 
    download(keya,valb); 
}); 
}); 

我想這個下載功能被稱爲每2秒。 問題是我無法使用setTimeout。

+1

筆者暗示,他不希望在代碼中使用的setInterval ,但接受了這個答案。很明顯,這個問題沒有很好地制定。 – 2011-05-07 14:01:35

+0

非常感謝你,但是如果我可以重申我所說的話,「沒有setInterval也沒有幫助」。 – Dhiraj 2011-05-07 14:05:07

+1

自澄清之後刪除了-1。但我建議閱讀:http://meta.stackexchange.com/questions/18584/how-to-ask-a-smart-question。 – 2011-05-07 14:12:28

回答

1

這樣做:

var i=1; 
$.each(requiredCities,function(keya,valb){ 
$.each(requiredKeyWords,function(keya,valb){ 
    var timerId = setInterval(function(){ 
     download(keya,valb); 
     clearInterval(timerId); 
    }, 2000*(i++));  
}); 
}); 

乾杯

+0

是這個解決方案的作品,謝謝 – Dhiraj 2011-05-07 13:56:09

1

如果您想在下次調用之前等待一段時間,請使用jQuery API中的delay方法。

如果您希望您的代碼在一段時間後不斷再次運行(我認爲您的情況基於您的評論),請使用everyTime方法jQuery Timer Plugin

+0

但它說.delay()方法最好是延遲排隊的jQuery效果,所以如何在這種情況下使用延遲 – Dhiraj 2011-05-07 13:47:37

+0

好吧,我根據你的評論更新了答案。 – 2011-05-07 13:50:54

+0

非常感謝你erick我得到它的工作:) – Dhiraj 2011-05-07 14:01:40

0

我發現創建一個簡單的功能,並通過的setInterval,而不是setTimeout的調用通過函數代碼。這實際上取決於你想要做什麼。

也許這將更好地工作:

setInterval("fooBar()", 1000); 

function fooBar(){ 
$.each(requiredCities,function(keya,valb){ 
$.each(requiredKeyWords,function(keya,valb){ 
    download(keya,valb); 
}); 
}); 
} 

不知道是否可行,但在第一次刷我認爲這將是罰款

+0

非常感謝你懸崖,我得到它的工作:) – Dhiraj 2011-05-07 14:02:14