2017-05-10 14 views
1

私は反復しているオブジェクトを持っています。今このオブジェクトのキー、値ペアのそれぞれについて、私はI/O要求をする関数を呼び出す必要がありますが、これらの繰り返しの間に待つ必要があります。つまり、最初のオブジェクトを読み取り、関数に渡してnミリ秒待ってからnミリ秒後に2番目のペアを読み込み、関数に渡してリスト内のオブジェクトが終了するまで再び待機します。これはどうすればいいですか?ノード非同期ループ間のforeachof遅延

現在、これは助けない私のコード

async.forEachOfSeries(object1, 
    function(value, key, callback) {  
     //send switch status 
     if(object1.key1 == some condition){ 
      sql.query1 
     } 
     some io request based on query result 
     callback(); 
     want some delay here 
    }, 
    function(err) { 
     if(err) { 
      handle error 
     } 
     else { 
      report success 
     } 
    } 
) 

答えて

1
Try this - 

async.forEachOfSeries(object1, 
    function(value, key, callback) {  
     //send switch status 
     if(object1.key1 == some condition){ 
      sql.query1 
     } 
     some io request based on query result 
     setTimeout(function() { 
       callback(); 
      }, 10000) 
    }, 
    function(err) { 
     if(err) { 
      handle error 
     } 
     else { 
      report success 
     } 
    } 
) 

Set the timer delay to whatever time you want. Hope this helps. 
+0

の概要です。 ioは依然として遅延なしにファイアアップを要求します。 –

+0

@ RishabhKaushikそれは私のために働いています、どのようなioの発射ですか?コールバック()はイテレータであり、次の反復では遅延が発生し、ファイアリングでは遅くなりません。 –

+0

ioはmqtt publishです。各反復は1つのそのような要求で構成されていますが、私はこのビットを試しましたが、そこに10000 msの遅延を入れましたが、すべてのmqtt要求が同時に起こっています。 –

関連する問題