我有这段代码:
db.group.findOne({_id: id}).then((groupFound) => {
var membersArray = groupFound.members;
Promise.all(membersArray.map((member) => {
return db
.doneTodo
.find({'victor._id': member._id})
.then((userVictories) => {
return {
email: member.email,
victories: userVictories.length
}
});
})).then(function (result) {
console.log(result);
});
db调用都是MongoDB / Mongoose。
从 map 函数返回的数组内部是所有承诺。
最后一次电话:
.then((userVictories) => {
return {
email: member.email,
victories: userVictories.length
}
})
返回一个承诺。
基本上,在进行此调用之后,我所拥有的是:
[promise1, promise2, promise3, ... , promise x]
如何这些承诺的结论是将数组值更改为promise1.then( (result))
的值?
答案 0 :(得分:0)
这些承诺如何将数组值更改为promise1.then((result))的值?
这里没什么特别的。数组中的promise将像任何承诺一样 - 它们将在一段时间后解析为某个值,在一段时间后导致错误,或者如果它们设置得很差,从不解决或产生错误。< / p>
Set oShell = CreateObject("Wscript.Shell")
oShell.Run "%comspec% /c echo " & Chr(7),0,false
Set oShell = nothing
的目的只是等待数组中的所有值解析或者抛出错误。如果它们全部解决,则从Promise.all
返回的承诺将解析为所有结果的数组。如果一个人抛出错误,就会产生错误。
Promise.all
不是对承诺做任何事情,只是看着它们。我们可以像这样创建我们自己的Promise.all
简单版本:
Promise.all