Node.js - Ожидание завершения нескольких функций - PullRequest
5 голосов
/ 05 января 2012

Итак, у меня есть код, который выглядит примерно так:

var data = someobject;

for(var x in data){
    mongo.findOne({ _id:data[x]._id },function(e,post){
        if(post != null){

            post.title = 'omg updated';
            post.save(function(){
                console.log('all done updating');
            });

        }
    });
}

// I need all ^ those functions to be done before continuing to the following function:
some_function();

Я изучил библиотеку Async, которую я использую для параллельной работы, когда у меня есть установленное количество функций, которые мне нужно запустить за 1 раз. Но я не уверен, как добиться желаемого эффекта.

Все эти функции могут работать параллельно, мне просто нужно знать, когда все будет сделано.

1 Ответ

8 голосов
/ 05 января 2012

Это идеальный случай для метода Async forEach , который будет выполнять параллельные задачи над элементами массива и затем вызывать обратный вызов, например:

async.forEach(Object.keys(data), function doStuff(x, callback) {
  // access the value of the key with with data[x]
  mongo.findOne({ _id:data[x]._id },function(e, post){
    if(post != null){
      post.title = 'omg updated';
      post.save(callback);
    }
  });  
}, function(err){
  // if any of the saves produced an error, err would equal that error
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...