setInterval(function(){}, 200)
这段代码每200毫秒运行一次函数,如果我只想让函数运行10次,该怎么做?
谢谢帮助。
setInterval(function(){}, 200)
这段代码每200毫秒运行一次函数,如果我只想让函数运行10次,该怎么做?
谢谢帮助。
使用一个计数器,每次回调执行时增加计数器的值,当它达到所需的执行次数时,使用clearInterval()
来停止定时器:
var counter = 0;
var i = setInterval(function(){
// do your thing
counter++;
if(counter === 10) {
clearInterval(i);
}
}, 200);
(function(){
var i = 10;
(function k(){
// your code here
if( --i ) {
setTimeout( k, 200 );
}
})()
})()
setTimeout
而不是setInterval
会更好。我可能会选择var i = 10
和if (i--)
,但这只是我的个人偏好 :-) - Andy E如果您希望它运行10次,并且每次运行的时间间隔为200毫秒,则200X10 = 2000。
var interval = setInterval(yourfunction, 200);
setTimeout(function() {
clearInterval(interval)
}, 2000);
但它只运行了9次,所以我们必须再增加200毫秒。
var interval = setInterval(yourfunction, 200);
setTimeout(function() {
clearInterval(interval)
}, 2200);
或者你可以在 setInterval 之前运行它
yourfunction();
var interval = setInterval(yourfunction, 200);
setTimeout(function() {
clearInterval(interval)
}, 2000);
setTimeout()
。 - Paul Burilichev可重复使用的方法,具有选项循环次数
和延迟时间
,并利用回调函数
const loopInterval = ( callBack, numberOfLoop, delay ) => {
let counter = 0;
let i = setInterval( ()=> {
callBack([counter, numberOfLoop]);
counter++;
if(counter === numberOfLoop ) clearInterval(i);
}, delay);
}
const runThisFunctionAsCallBack = ( x ) => console.log(`Do something here... Loop # ${x}` )
loopInterval( runThisFunctionAsCallBack, 4, 500 )
我的方法类似于JavaScripter199的(使用for循环)方法,但包括了setInterval函数。请参见下文:
for (let runner = 0; runner < 10; runner++) {
setInterval(() => {
//Some code logic of yours.
}
}, 200 //run every 200 milliseconds);
}
只需使用for循环即可,更简单:
尝试使用以下代码。
for (counter=0; counter<0; counter++) {}
counter
没有被初始化,而且这并没有回答如何在定时延迟内完成它的问题。 - Brayden
window.setInterval
。jslint 不会接受function
关键字和()
之间的空格缺失以及其他一些东西,但这是另一个讨论话题了。jslint 不会接受++
和--
,但我们在这里是来帮助 OP 而不是“伤害他的感情” :) - karim79