【发布时间】:2011-04-18 10:07:24
【问题描述】:
如何设置 setInterval 渲染循环,一旦满足条件,就会中断?
【问题讨论】:
标签: javascript loops html canvas
如何设置 setInterval 渲染循环,一旦满足条件,就会中断?
【问题讨论】:
标签: javascript loops html canvas
尼克的回答完美。我通过返回一个承诺来扩展它
function checkUntil(conditionFunc, millisecondsInterval) {
var retryCount = 0;
var retryCountLimit = 100;
var promise = new Promise((resolve, reject) => {
var timer = setInterval(function () {
if (conditionFunc()) {
clearInterval(timer);
resolve();
return;
}
retryCount++;
if (retryCount >= retryCountLimit) {
clearInterval(timer);
reject("retry count exceeded");
}
}, millisecondsInterval);
});
return promise;
}
你可以像这样调用它
checkUntil(function () {
return document.querySelector('body');
}, 500).then(function () {
...
...
});
});
【讨论】:
clearInterval 使用setInterval 返回的ID 停止从setInterval 的重复:
var interval = setInterval(function() {
// do your loop
if (loop_should_stop) {
clearInterval(interval);
}
}, dt);
【讨论】:
你可以存储区间ID并通过clearInterval()清除,例如
var timer = setInterval(myFunction, 1000);
function myFunction() {
if(condition) {
clearInterval(timer);
return;
}
//do stuff
}
或者如果你可以在设置条件的地方调用clearInterval(),那么下一个间隔不会运行,函数本身没有逻辑。
【讨论】:
如果您询问如何停止使用 setInterval() 设置的函数调用,只需使用 clearInteval() function。 您首先必须保存对 setInterval 函数的引用,然后使用此引用来停止间隔:
var int=self.setInterval("your_function_name()",1000);
if(condition){
clearInterval(int)
}
【讨论】: