停止射击Ajax请求
问题描述:
问题最好由代码解释:停止射击Ajax请求
var myinterval = setInterval(function() {
$.ajax({
data: data
url: url,
success: function(data) {
if (data) { /* I want to clear current interval */ }
else { /* let it firing ajax requests further */ }
}
});
}, 1000);
所以,我要的是火Ajax请求每秒检查的“东西”的状态变化。如果这件事发生了变化,我想停止检查它。基本上,我问我该如何做到最好,最理解的方式。
我以前那样是一种丑陋:
window.x = {
'debug' : document.location.host.indexOf('.ru') != document.location.host.length - 3
};
var setItem = function(i,v) {
if (window.x['debug'] && typeof window.x[i] != 'undefined' && typeof console != 'undefined' && window.x[i] != v)
console.log('Value of item ' + i + ' has changed from ' + window.x[i] + ' to ' + v)
window.x[i] = v
};
var getItem = function(i) {
if (window.x['debug'] && typeof window.x[i] == 'undefined' && typeof console != 'undefined')
console.warn('Value of item ' + i + ' is undefined (maybe was not set?)')
return window.x[i]
};
所以,是的,我已经占领了全球x
这里(这是我的临时存储)。现在,我可以把我的时间间隔var
到x
:
setItem('myinterval', myinterval);
内成功的功能,我可以得到这个区间:
getIntem('myinterval');
并停止它:
clearInterval(getItem('myinterval'));
但这实在是太丑了,不是吗? 什么是最好的方法呢?
答
只需使用clearInterval(myinterval)
:
var myinterval = setInterval(function() {
$.ajax({
data: data
url: url,
success: function(data) {
if (data) {
clearInterval(myinterval);
}
}
});
}, 1000);
答
你已经在myinterval
保存到区间的引用,所以这有什么错:
clearInterval(myinterval);
集'变种X = $阿贾克斯(.. 。';'然后当你需要它时x.abort()。 – 2011-12-27 04:48:08