0

jQuery や Ajax などを使用して誰かがメッセージを送信したときに更新したい通知ゾーンがあります (私のデータベースは SOAP サーバーにあります)。

4

3 に答える 3

3

単純なsetInterval構造を使用して、定義済みの間隔で AJAX 呼び出しを実行できます。このようなもの:

setInterval(function(){
  $.get('ajax_responder.php',dataObj,function(){
    // ajax callback
    // here is where you would update the user with any new notifications.
  });
},5000);

前のコードは、5000 ミリ秒ごと (5 秒ごと) に AJAX 要求を実行します。

参考文献:

于 2013-05-10T23:18:56.623 に答える
3

の代わりにsetInterval()、 を使用することを強くお勧めしますsetTimeout()

MDN の説明:

ロジックの実行に間隔時間よりも時間がかかる可能性がある場合は、 を使用して名前付き関数を再帰的に呼び出すことをお勧めしますwindow.setTimeout。たとえば、setInterval を使用して 5 秒ごとにリモート サーバーをポーリングする場合、ネットワーク遅延、応答しないサーバー、およびその他の多くの問題により、割り当てられた時間内に要求が完了しない可能性があります。そのため、必ずしも順番に返されるとは限らない XHR リクエストがキューに入れられていることに気付くかもしれません。

このような場合は、再帰setTimeoutパターンが推奨されます。

(function loop(){    
    setTimeout(function(){

        // logic here

        // recurse
        loop();
    }, 1000); 
})(); 

上記のスニペットでは、名前付き関数ループが宣言され、すぐに実行されます。 ロジックの実行が完了した後、loop内部で再帰的に呼び出されます。setTimeoutこのパターンは固定間隔での実行を保証しませんが、再帰する前に前の間隔が完了していることを保証します。

于 2013-05-10T23:29:14.563 に答える