0

setTimeouts を再帰的に使用して setInterval をエミュレートし、それ自体がオーバーランするのを防ぎます。例:

this.poll = function() {
    var self = this;
    if(self.timeout) {
          clearTimeout(self.timeout)
    }
    self.timeout = setTimeout(function(){
      self.request();
    }, 1000);
}

self.request();ajax ロジックと呼び出しが含まれていますthis.poll()

this.poll問題は、が再度呼び出されたときに実際にタイムアウトがクリアされないように見えることです。最終的には大量のリクエストが重なり合ってしまいます。

これを処理するより良い方法はありますか?

ありがとうございました!

4

1 に答える 1

0

フラグを使用してsetIntervalをエミュレートして、同時に2回実行されないようにするのはなぜですか?

this.poll = function(){
  if(this.running) return;
  this.running = true;
  var self = this;
  setIntervar(function(){
     var callback = function(){
        //your stuff 
        self.running = 0;
     };
     self.request(.....,callback);
  },1000)
} 
于 2012-08-23T20:17:29.073 に答える