我尝试在页面中显示增加进度条。我同时跑两个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)
答案 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);
您在设置间隔时所做的是传递匿名函数,并在该函数中调用所需的函数。不需要传递匿名函数只需传递需要执行的函数。