Clear Interval目前不起作用

时间:2017-02-06 08:49:04

标签: jquery ajax setinterval clearinterval

我尝试在页面中显示增加进度条。我同时跑两个ajax。我需要在完成ajax时,使用clearInterval(GetProgress);语句停止 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); } }); }; 但不起作用。

什么是问题?

count(*)/sum(Duration)

2 个答案:

答案 0 :(得分:2)

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

setInterval()返回的ID值用作clearInterval()方法的参数,因此您需要检索此ID值。

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

clearInterval(myIntervalID);

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

答案 1 :(得分:1)

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

应该成为:

位于文件顶部

var myInterval;

然后在函数中

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

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

clearInterval(GetProgress);

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

clearInterval(myInterval);

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