清除间隔目前不起作用

Clear Interval does not work currently

我尝试在我的页面中显示增加进度条。我运行两个ajax同时在一起。我需要在 ajax 完成后,用 clearInterval(GetProgress); 语句停止 setInterval 但不起作用。

有什么问题?

 var RefreshCheapCharters = function (el) {
         $(el).append('<i class="fa fa-spinner Rotate360"></i>');
         $.when(RefreshProgress(3),
         $.ajax({
              url: '/CheapTravel/CheapCharters/',
              type: "POST",
              success:function (result) {
                         console.log(result);
                         $(el).find('.fa-spinner').remove();
                         clearInterval(GetProgress);
                         $('.progress-bar').css('width', 0 + '%').text('');
                     },
                 error: function (jqXhr, textStates, errorThrown) {
                     console.log(errorThrown);
                     $(el).find('.fa-spinner').remove();
                     clearInterval(GetProgress);
                     $('.progress-bar').css('width', 0 + '%').text('');
                 }
             })
           );   
        };
        var RefreshProgress = function (reserveType) {
            setInterval(function () {
                GetProgress(reserveType);
            }, 10000);

        };
        var GetProgress = function (reserveType) {
            $.ajax({
                url: '/CheapTravel/RefreshProgress',
                data: { reserveType: reserveType },
                type: "POST",
                success:
                    function (result) {
                        $('.progress-bar').css('width', result + '%').text(result + '% انجام شد');
                    },
                error: function (jqXhr, textStates, errorThrown) {
                    console.log(errorThrown);
                    $('.progress-bar').css('width', 0);
                    console.log('خطای سیستمی');
                    clearInterval(GetProgress);
                }
            });
 };

clearInterval() 方法清除使用 setInterval() 方法设置的计时器。

setInterval()返回的ID值作为clearInterval()方法的参数,所以需要取回这个ID值。

var myIntervalID = setInterval(function () {
    GetProgress(reserveType);
}, 10000);

clearInterval(myIntervalID);

您将函数 (GetProgress) 传递给 clearInterval(),这是错误的。

setInterval(function () {
    GetProgress(reserveType);
}, 10000);

应该变成:

在文件顶部

var myInterval;

然后在函数

myInterval = setInterval(GetProgress(reserveType), 10000);

清除间隔时,您将调用的函数作为参数传递

clearInterval(GetProgress);

传递变量名而不是调用的函数

clearInterval(myInterval);

您在设置间隔时所做的是传递一个匿名函数,并在该函数中调用所需的函数。里面不用传递匿名函数,只传递需要执行的函数即可。