2017-07-13 16 views
-1

具体的には、現在のリクエストが処理されるまで待つことを望みます。それが処理されたら、前のものが処理されてからもう一度待ってください。クライアント側の接続が切断された場合は、要求が継続されるようにしたいので、プロセス全体が停止するだけではありません。AJAX毎秒リクエスト

は私のコードは、以下の一度だけで、要求の束を作る:

 makeLiveRequest(testState) { 
      var that = this; 

      $.ajax({ 
       headers: { 
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
       }, 
       url: '/getData', 
       type: 'GET', 
       dataType: 'JSON', 
       success: function(response) { 
        that.$set(that.state, 'testData', response); 
       }, 
       complete: function (data) { 
        that.convertChartData(); 
        setTimeout(that.makeLiveRequest, 5000); 
       } 
      }); 

      this.makeLiveChartRequest(); 
     }, 

オンライン見ると、のsetIntervalが推奨されていないようです。何か案は?

+1

クライアント側の接続が切断されている場合、要求を行うクライアントアプリケーションはなくなります。だから私は不可能だと思う。 – djfdev

+0

あなたのロジックはうまく見えますが、 'that'に' makeLiveRequest'メソッドがありますか?それはsettimeoutへのコールバックではありません。 –

答えて

1

を取る しかし、私はここに気づくことができる点は次のとおりです。私たちはsetTimeout実行に渡さ コールバックwindowオブジェクトのコンテキストでは、 that = thiswindowthatという変数を格納し、従属データを取得しないため、達成したい論理的な失敗が生じる可能性があります。

ではなく

setTimeout(that.makeLiveRequest.bind(that,<your arg value for testState>), 5000);

またはsetTimeoutへのコールバックを渡すように呼び出し、その内部からthat.makeLiveRequest(arg)を呼んでください。

1

私はあなたにasyncライブラリを、主に永遠の方法を使用することをお勧めします。

(その非常に迅速に解決することができる)を開始の正確な理由は次の要求に対処することはできません見にhere

関連する問題