我希望在forEach()循环期间返回最后一个承诺时调用一个函数。
示例代码:
var mainList = getArrayData()
mainList.forEach((item,i)=>{
mongooseSchema.find(_id:item.id).exec((err,doc)=>{
doStuff(doc)
})
})
第二个块之后的任何代码将在所有mongo查询被发送后立即运行。如果将整个事物包装在一个promise中(即数组数据来自一个单独的mongo查询),你仍然会得到相同的效果。
有没有什么方法可以为最后一个查询提供特殊的函数/回调,或者更好的是,在所有查询返回后返回的promise?
由于
答案 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()