mongoose批量保存与承诺

我正在探索使用q而不是asynchronous – 然后我遇到了这里解决的问题:

mongooseJS承诺? 或者如何pipe理批量保存

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

如果docs[i].save()没有返回promise,这个代码实际上可能不工作。

 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); }); 

我们在循环中一次开始所有的操作,但是我们并不等待其中的任何一个完成,所以它们并行运行。 我们为数组添加一个承诺(就像结果的占位符一样)。 然后,我们等待承诺数组中的所有承诺完成。

查看我对使用ForbesLindesay解决scheme遇到的问题的评论。 这是我最后(刚刚添加ninvoke返回一个承诺):

 var tasks = []; for (var i=0; i < docs.length; i++) { tasks.push(Q.ninvoke(docs[i], "save")); } Q.all(tasks) .then(functions, function(results) { console.log(results); }, function (err) { console.log(err); });