Как остановить рекурсивный опрос Ajax на модальном закрытии Bootstrap?

Я вызываю функцию опроса 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');
            }

        }
    });
}

0 ответов

Другие вопросы по тегам