我希望能够每 6 秒调用函数 work()
。我的 jQuery 代码是
function looper(){
// do something
if (loopcheck) {
setInterval(work,6000);
}
else {
console.log('looper stopped');
}
}
我遇到的问题是它快速循环两次工作,然后等待 6 秒。我尝试使用 setTimeout
得到类似的结果。
什么可能导致工作在延迟工作之前被调用两次?
最佳答案
设置间隔 should be avoided .如果您希望每 6 秒重复调用一次工作,请考虑改为递归调用 setTimeout
function loopWork(){
setTimeout(function () {
work();
loopWork();
}, 6000);
}
然后
function looper(){
// do something
if (loopcheck) {
loopWork()
}
else {
console.log('looper stopped');
}
}
当然,如果你想停止它,你会保存最后一次调用 setTimeout 的值,并将其传递给 clearTimeout
var timeoutId;
timeoutId = setTimeout(function () {
work();
loopWork();
}, 6000);
然后停止它
clearTimeout(timeoutId);
关于javascript - setTimeout 和 setInterval 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8695418/