清除间隔目前不起作用
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);
您在设置间隔时所做的是传递一个匿名函数,并在该函数中调用所需的函数。里面不用传递匿名函数,只传递需要执行的函数即可。
我尝试在我的页面中显示增加进度条。我运行两个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);
您在设置间隔时所做的是传递一个匿名函数,并在该函数中调用所需的函数。里面不用传递匿名函数,只传递需要执行的函数即可。