Является ли JavaScript clearInterval асинхронным? - PullRequest
0 голосов
/ 27 декабря 2018

У меня есть код ниже.

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 голосов
/ 27 декабря 2018

Дело не в том, чтобы быть clearInterval синхронизированным или асинхронным.

В своем коде вы запускаете интервал в первый раз, а затем через каждую секунду вы выполняете ваш myCallback.

Сброс интервала при получении ответа означает, что в течение времени выполнения запроса ajax интервал все еще выполняется и запустит новые запросы ajax.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...