从一系列Mongo更新中回调最后一个承诺

时间:2016-02-10 00:22:17

标签: node.js mongodb mongoose promise

我希望在forEach()循环期间返回最后一个承诺时调用一个函数。

示例代码:

var mainList = getArrayData()

mainList.forEach((item,i)=>{
    mongooseSchema.find(_id:item.id).exec((err,doc)=>{
        doStuff(doc)
    })
})

第二个块之后的任何代码将在所有mongo查询被发送后立即运行。如果将整个事物包装在一个promise中(即数组数据来自一个单独的mongo查询),你仍然会得到相同的效果。

有没有什么方法可以为最后一个查询提供特殊的函数/回调,或者更好的是,在所有查询返回后返回的promise?

由于

1 个答案:

答案 0 :(得分:0)

你可以使用Promise.all。一旦解决了数组中的所有promise,它就会触发。

  

Promise.all(iterable)方法返回一个promise,它在iterable参数中的所有promise都已解析时解析,或者拒绝第一个传递的拒绝的promise的原因。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all

grades_sum()