2011-12-27 12 views
0

問題が最良のコードによって説明された要求:ストップ発射アヤックスが

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を占領しました。 、

clearInterval(getItem('myinterval')); 

しかし、これは本当に醜いです:

getIntem('myinterval'); 

と、それを停止します。私はこの間隔を得ることができ、成功関数内

setItem('myinterval', myinterval); 

:今、私はxに私の間隔varを設定することができますではない? とは何ですか?最高のこれを行うには?

+0

セット 'のvar x = $アヤックス(.. ';'、次にx.abort()が必要です。 –

答えて

2

だけclearInterval(myinterval)を使用します。

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

あなたはまだ何がと間違っている、myintervalに間隔への参照を保存している:

clearInterval(myinterval); 
関連する問題