我正在努力編寫函數迭代多次的方式,並在每次迭代之間停留5秒。每次迭代都需要在下一次迭代開始前完成。在每次迭代完成後再次迭代函數
我被告知回調函數或Promise是要走的路,但我對JavaScript很新,並且在編碼時遇到了麻煩。
任何人都可以幫助我嗎?遠的不說有問題的功能被稱爲「Ineedhelp()」
感謝
我正在努力編寫函數迭代多次的方式,並在每次迭代之間停留5秒。每次迭代都需要在下一次迭代開始前完成。在每次迭代完成後再次迭代函數
我被告知回調函數或Promise是要走的路,但我對JavaScript很新,並且在編碼時遇到了麻煩。
任何人都可以幫助我嗎?遠的不說有問題的功能被稱爲「Ineedhelp()」
感謝
還有一堆的方法可以做到這一點,但一個簡單的方法是使用的setInterval/clearInterval:
var maxIterations = 3;
var iterations = 0;
var msDelay = 5000;
iNeedHelp();
var interval = setInterval(iNeedHelp, msDelay);
function iNeedHelp() {
iterations++;
console.log("in iNeedHelp, iteration " + iterations);
if (iterations >= maxIterations) {
clearInterval(interval);
}
}
這將在maxIteration中設置多次iNeedHelp,並在每次調用之間暫停msDelay毫秒。
你可以找到的setInterval/clearInterval這裏一些額外的信息:https://www.w3schools.com/jsref/met_win_setinterval.asp
的一個好辦法做到這一點將使超時在你的函數結束。例如,如果你想讓它迭代5次,下面的代碼將起作用。
var i = 0;
function iNeedHelp() {
i++;
alert('You\'ve been helped ' + i + ' times so far.');
if (i < 5) {
setTimeout(function(){iNeedHelp()}, 5000);
}
}
iNeedHelp();
或者更簡潔'setTimeout(iNeedHelp,5000);' –
當你說每次迭代需要在下一次迭代開始之前完成時,你的意思是說它需要在下一次迭代的5秒定時器開始之前完成嗎? – Alesana
如果'function'包含一些異步代碼,Promise將會很有用,否則Promises只會使代碼複雜 –