jquery 停止触发ajax请求

3xiyfsfu  于 2022-12-03  发布在  jQuery
关注(0)|答案(2)|浏览(177)

这个问题最好用代码来解释:

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'));

但这真的很难看,不是吗?什么是最好的更好的方式做到这一点?

ca1c2owp

ca1c2owp1#

只需使用clearInterval(myinterval)

var myinterval = setInterval(function() {
    $.ajax({
        data: data
        url: url,
        success: function(data) {
            if (data) {
                clearInterval(myinterval);
            }
        }
    });
}, 1000);
g6ll5ycj

g6ll5ycj2#

你已经在myinterval中保存了一个对区间的引用,那么以下语句有什么问题:

clearInterval(myinterval);

相关问题