내 Process1()
함수에 데이터베이스 루프가 있으므로 Process2()
및 Process3()
번 이상 호출하는 중입니다. async
에 어떤 기능을 사용하여 for loop
을 기다려야합니까?Node.Js 비동기 사용법
async.waterfall([
function(callback){
Process1(yyy, function(){
//process1 function has a for loop.
callback();
})
},
function(callback){
Process2(function(){
// so process2() is calling more than once
callback();
})
}
], function (callback) {
Process3()
});
Process1() : 호출이 다시 일어날 때까지 lodash
및 underscore
대기하지 않기 때문에 코드를 보면
function Process1(yyy, pass){
user.find({}).exec(function(e, users){
_.each(users, function(_user){
user.findOneAndUpdate(
{'_id' : user_id},
{$inc : {'xxx' : yyy}},
function(e){
!e && pass()
})
})
})
}
항상 'for' 루프를 기다립니다. 해야만합니다. – Brad
하지만'process2' 전에 데이터베이스 프로세스를 실행해야합니다. 어떤 해결책이 없습니까? @ 브래드 감사합니다. – Lazy
여기에 표시된 코드를 사용하면 문제가 해결됩니다. 'Process2'는 첫 번째 클로저에서'callback'이 호출 될 때까지 실행되지 않습니다. – Brad