2017-03-16 171 views
0

我正在努力编写函数迭代多次的方式,并在每次迭代之间停留5秒。每次迭代都需要在下一次迭代开始前完成。在每次迭代完成后再次迭代函数

我被告知回调函数或Promise是要走的路,但我对JavaScript很新,并且在编码时遇到了麻烦。

任何人都可以帮助我吗?远的不说有问题的功能被称为“Ineedhelp()”

感谢

+0

当你说每次迭代需要在下一次迭代开始之前完成时,你的意思是说它需要在下一次迭代的5秒定时器开始之前完成吗? – Alesana

+0

如果'function'包含一些异步代码,Promise将会很有用,否则Promises只会使代码复杂 –

回答

0

还有一堆的方法可以做到这一点,但一个简单的方法是使用的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

1

的一个好办法做到这一点将使超时在你的函数结束。例如,如果你想让它迭代5次,下面的代码将起作用。

var i = 0; 
function iNeedHelp() { 
    i++; 
    alert('You\'ve been helped ' + i + ' times so far.'); 
    if (i < 5) { 
    setTimeout(function(){iNeedHelp()}, 5000); 
    } 
} 
iNeedHelp(); 
+1

或者更简洁'setTimeout(iNeedHelp,5000);' –