Promise.all承诺的一系列

时间:2017-01-03 00:37:31

标签: javascript node.js mongodb asynchronous

我有这段代码:

 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))的值?

1 个答案:

答案 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

相关问题