JavaScript clearInterval是异步的吗?

时间:2018-12-27 16:25:30

标签: javascript asynchronous synchronization

我有下面的代码。

var intervalId;

function myCallback() {
    $.ajax({
        url: "http://bla.html",
        cache: false,
        success: function(data) {
            if (intervalId) {
                clearInterval(intervalId);
            }

            if (data && data.result) {
                return;
            }

            alert(data.result);
        }
        , timout: 2000
    });
}

function callInterval() {
    intervalId = setInterval(myCallback, 5000);
}

callInterval();

问题在于“ clearInterval(intervalId)”似乎没有在这个正确的时间使间隔无效,因为消息警报显示了两次。

这是我的问题, clearInterval(intervalId)是异步的吗?

1 个答案:

答案 0 :(得分:0)

重点不是要成为clearInterval同步还是异步。

在您的代码中,第一次启动间隔,然后每隔一秒钟执行一次myCallback

清除返回响应时的​​时间间隔,意味着在ajax请求执行期间,时间间隔仍在运行,并且将启动新的ajax请求。