附加承诺参数javascript

时间:2017-07-15 01:22:29

标签: javascript asynchronous promise

所以我得到了这个

for(var i =0;i<result.length;i++){
    User.find(result[i].user).then((err,user)=>{
        resultArray.push({name : result[i].name, userName : user.name});     
    }
}

但它不起作用,因为循环在promises结算之前结束。 所以我想知道我是否可以将i的副本提供给User.find()回调? 我不知道如何保持数据在结果和用户数组之间同步,因为我不知道承诺将以哪种顺序得到解决。

1 个答案:

答案 0 :(得分:0)

在评论部分提到,您要解析所有用户。您可以使用Array方法map生成一个Promises数组,然后传递给Promise.all,如下所示:

Promise.all(
  result.map( res => User.find( ... ) )
)
  .then( result => {
    // all resolved users are in result
  } );