2017-05-10 2 views
1

나는 반복되는 객체를 가지고있다. 이제이 객체의 키, 값 쌍 각각에 대해 I/O 요청을하는 함수를 호출해야하지만이 반복 사이에 기다려야합니다. 즉, 첫 번째 객체를 반복하여 함수를 전달하고 n 밀리 초 동안 기다린 다음 n 밀리 초 후에 두 번째 쌍을 읽고 함수에 전달한 다음 목록의 객체가 끝날 때까지 다시 대기합니다. 어떻게해야합니까?노드 비동기 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 그것은 나를 위해 일하고 있습니다, 당신은 어떤 종류의 발포하고 있습니까? 콜백()은 반복자입니다. 다음 반복에는 지연이 있고, 호출에는 지연이 없습니다. –

+0

io가 mqtt publish입니다. 각 반복은 하나의 요청으로 구성되어 있지만이 비트를 시도했지만 모든 mqtt 요청은 동시에 발생하지만 10000 ms 지연이 있습니다. –