我正在探索使用q而不是异步-然后遇到了此处解决的问题:

Mongoose JS promises? Or how to manage batch save

如果我使用q,这个答案将会是什么?

最佳答案

请参阅@rquinn的帖子,如果docs[i].save()不返回承诺,则此代码可能实际上不起作用。

var tasks = [];

for (var i=0; i < docs.length; i++) {
  tasks.push(docs[i].save());
}

Q.all(tasks)
  .then(functions, function(results) {
    console.log(results);
  }, function (err) {
    console.log(err);
  });


我们一次循环启动所有操作,但是我们不等待任何操作完成,因此它们并行运行。我们向数组添加一个promise(充当结果的占位符)。然后,我们等待所有承诺中的所有承诺完成。

10-04 22:05
查看更多