Как остановить рекурсивный опрос Ajax на модальном закрытии Bootstrap? - PullRequest
0 голосов
/ 27 декабря 2018

Я вызываю функцию опроса ajax, когда открывается конкретный модал начальной загрузки, он работает хорошо, но когда я принудительно закрываю BS Modal, функция опроса должна остановиться, но она продолжает работать в фоновом режиме.

Я не знаю, что я делаю неправильно.Использование Bootstrap 4.

Вот мой js-скрипт,

var run = function() {

    $.ajax({
        url: ajaxurl,
        dataType: 'json',
        type: 'GET',
        data: data,
        success: function (data) {
            var list = data.list;

            $("#modal").on('hidden.bs.modal', function (e) {
                clearTimeout(recursive);
                console.log('stop');
            });

            if (list > 0) {
                recursive = setTimeout(run, 2000);  
                console.log('run');
            } else if (list == 0) {
                clearTimeout(recursive);
                console.log('stop');
            }

        }
    });
}

Обновление:

Я пробовал таким образом, но не работает.

var recursive;

$("#modal").on('shown.bs.modal', function (e) {
    run();
});

$("#modal").on('hidden.bs.modal', function (e) {
    clearTimeout(recursive);
});

var run = function() {

    $.ajax({
        url: ajaxurl,
        dataType: 'json',
        type: 'GET',
        data: data,
        success: function (data) {
            var list = data.list;

            if (list > 0) {
                recursive = setTimeout(run, 2000);  
                console.log('run');
            } else if (list == 0) {
                clearTimeout(recursive);
                console.log('stop');
            }

        }
    });
}
...