setInterval完成整个执行时的clearInterval

时间:2015-05-12 14:22:33

标签: javascript node.js setinterval clearinterval

我在调用函数时使用了clearInterval来停止执行setInterval。

var myVar;

function myFunction() {
    myVar = setinterval(function(){ alert("Hello"); }, 3000);
}

function myStopFunction() {
    clearInterval(myVar);
    ...
}

但问题是clearInterval没有等待setInterval完成执行整个代码....因此我有一个错误。 我怎样才能做到这一点? (如果可能的话)

2 个答案:

答案 0 :(得分:2)

您还需要将后停止代码放入回调中。您可以在开始下一次迭代之前检查是否已设置此项,然后在间隔回调中再次设置。

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;
}

答案 1 :(得分:0)

last-page