clearInterval 当 setInterval 完成整个执行
clearInterval when the setInterval has finished the whole execution
我已经使用 clearInterval 在调用函数时停止执行 setInterval。
var myVar;
function myFunction() {
myVar = setinterval(function(){ alert("Hello"); }, 3000);
}
function myStopFunction() {
clearInterval(myVar);
...
}
但问题是 clearInterval 不等待 setInterval 完成执行整个代码....因此我有一个错误。
我怎样才能做到这一点? (如果可能的话)
var myVar;
function myFunction() {
myVar = setInterval(function(){
console.log("Hello");
clearInterval(myVar);
}, 3000);
}
myFunction();
您还需要将 post 停止代码放入回调中。您可以在开始下一次迭代之前检查是否已设置此设置,然后在您的间隔回调中再次检查。
var myVar;
var stopCallback = null;
var processing = false;
function myFunction() {
myVar = setInterval(function(){
processing = true; // don't let the finishStopping() code run yet
alert("Hello");
someOperationWithCallback(function() {
/* inside your deepest level of callback */
processing = false;
if (stopCallback) finishStopping();
});
}, 3000);
}
function myStopFunction() {
stopCallback = function() {
/* work to do after stopping */
};
if (!processing) finishStopping();
}
function finishStopping() {
clearInterval(myVar);
stopCallback();
stopCallback = null;
}
我已经使用 clearInterval 在调用函数时停止执行 setInterval。
var myVar;
function myFunction() {
myVar = setinterval(function(){ alert("Hello"); }, 3000);
}
function myStopFunction() {
clearInterval(myVar);
...
}
但问题是 clearInterval 不等待 setInterval 完成执行整个代码....因此我有一个错误。 我怎样才能做到这一点? (如果可能的话)
var myVar;
function myFunction() {
myVar = setInterval(function(){
console.log("Hello");
clearInterval(myVar);
}, 3000);
}
myFunction();
您还需要将 post 停止代码放入回调中。您可以在开始下一次迭代之前检查是否已设置此设置,然后在您的间隔回调中再次检查。
var myVar;
var stopCallback = null;
var processing = false;
function myFunction() {
myVar = setInterval(function(){
processing = true; // don't let the finishStopping() code run yet
alert("Hello");
someOperationWithCallback(function() {
/* inside your deepest level of callback */
processing = false;
if (stopCallback) finishStopping();
});
}, 3000);
}
function myStopFunction() {
stopCallback = function() {
/* work to do after stopping */
};
if (!processing) finishStopping();
}
function finishStopping() {
clearInterval(myVar);
stopCallback();
stopCallback = null;
}