我正在努力编写函数迭代多次的方式,并在每次迭代之间停留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只会使代码复杂 –