javascript - 当setInterval完成整个执行时clearInterval

标签 javascript node.js setinterval clearinterval

当调用函数时,我使用clearInterval来停止setInterval的执行。

var myVar;

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

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

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

最佳答案

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

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

关于javascript - 当setInterval完成整个执行时clearInterval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30193728/

相关文章:

javascript - HTML5/jQuery 节拍器 - 性能问题

javascript eval 上下文不包含 chrome 中的参数

javascript - JQuery Mobile - 将文本区域附加到现有页面

javascript - jQuery 标签云插件帮助

javascript - MySQL获取每个用户ID的最大日期并将它们转换为sequelize

javascript - 使用长间隔的 javascript setInterval 有什么缺点吗?

javascript - 如何从 Javascript 方法内部访问基础对象

javascript - Node Express.js 4 路由不工作,出现 404

node.js - 为什么 Node.js 有增量内存使用?

javascript - 具有自执行功能的setInterval