如何在Bootstrap模式关闭时停止递归Ajax轮询?

时间:2018-12-27 19:14:24

标签: jquery ajax ajax-polling

当特定的引导程序模态打开时,我正在调用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 个答案:

没有答案