这个问题最好用代码来解释:
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);
在success函数中,我可以得到以下间隔:
getIntem('myinterval');
并停止它:
clearInterval(getItem('myinterval'));
但这真的很难看,不是吗?什么是最好的更好的方式做到这一点?
2条答案
按热度按时间ca1c2owp1#
只需使用
clearInterval(myinterval)
:g6ll5ycj2#
你已经在
myinterval
中保存了一个对区间的引用,那么以下语句有什么问题: