2017-09-18 9 views
1

非同期関数からのコールバック(成功、エラー)の前に、新しい実行/呼び出しが開始されないように非同期jsコード(node.jsで書かれています)を実行する方法実行される。コード例:X秒ごとに非同期のjavascriptコードを実行

asyncFunc(function(successData){ 
    // do something with successData 
}, function(errorData){ 
    // do something with errorData 
}); 

たsetIntervalは、まず、私の心に来るが、私は、コールバックが内部間隔を実行しない場合、それはキューに行くだろう、私が欲しいものを確認していないと思います。

EDIT:単純化するために、コールバックが終了してから1秒後にasync関数の呼び出しを繰り返します。

+1

前回の呼び出しが完了してからX秒またはX秒ごとにコードを実行しますか? –

+0

以前のコールバックがまだ実行されている場合は、次回の実行を開始するまでにどれくらい待機しますか?直ちに実行するか、前回の呼び出しからn * X秒待つか、X秒かかりますか? – Alnitak

+0

質問を簡略化するために質問を変更します。コールバックが終了してから1秒後にファンクションコールを繰り返します。 – basic

答えて

3

あなたはこのようsetTimeoutを使用することができます。

(function loop() { 
    asyncFunc(function(successData){ 
     setTimeout(loop, X); 
    }, function(errorData){ 
     // If you still want to continue: 
     setTimeout(loop, X); 
    }); 
})(); // execute immediately 

非同期呼び出しがコールバックをトリガしたときに、この遅延を開始します。

1

あなたが呼び出す関数、それが呼ばれていますする間隔を指定することができます再利用可能な方法で問題を抽象化を検討し、コールバックを呼び出すために:

function repeatAsync(func, interval, success, error) { 
    (function loop() { 
     func(
      () => { 
       success(); 
       setTimeout(loop, interval); 
      }, 
      () => { 
       error(); 
       setTimeout(loop, interval); 
      } 
     ); 
    })(); // invoke immediately 
} 

したい場合2番目の引数をerrorと置き換えます。つまり、errorと置き換えます。func(() => { ... }, error)

関連する問題