0

15秒間隔で実行される小さなチェックにポーリングを使用しようとしています。

setInterval(function(){
            $.ajax({ url: "aaa.com",
                success: function(data){
                showUpdate(data);
              }, dataType: "text"});
            }, 15000);

ただし、これは、ポーリングが開始される前に15秒の初期遅延があることを意味します。これは、私の場合は望ましくありません。ポーリングをすぐに開始させるにはどうすればよいですか?

4

3 に答える 3

2

単純なものが仕事をするとき、賢い解決策を探してはいけません:

function check() {
   $.ajax({ url: "aaa.com",
     success: function(data){
     showUpdate(data);
   }, dataType: "text"});
}
check();
setInterval(check, 15000);

あるいは、私は一般的に好む

function check() {
   $.ajax({ url: "aaa.com",
     success: function(data){
        showUpdate(data);
        setTimeout(check, 15000);
   }, dataType: "text"});  
}
check();

応答が遅れた場合、呼び出しのスタックがないためです。

于 2012-10-25T10:10:39.953 に答える
0

呼び出し間の遅延を処理するコールバック関数を使用するという少し複雑な考えに陥ることなく、最も簡単な方法は、関数を名前付き関数に移動し、最初のラウンドで手動で呼び出すことです。

function doSomething() {

$.ajax({ url: "aaa.com",
                success: function(data){
                showUpdate(data);
              }, dataType: "text"});

}

doSomething();

setInterval(doSomething, 15000);
于 2012-10-25T10:12:19.600 に答える
0

ちょうどどうですか:

function immediatePoll(f, interval) {
    f();
    setInterval(f, interval);
}

immediatePoll(function(){
        $.ajax({ url: "aaa.com",
            success: function(data){
            showUpdate(data);
          }, dataType: "text"});
        }, 15000);
于 2012-10-25T10:12:28.017 に答える