Promise.all都依赖于第一个承诺的响应

时间:2020-09-27 19:48:11

标签: javascript node.js mongodb

我正在尝试使用Promise。所有这些,第二个承诺取决于第一个承诺响应。 这是我的代码

let user = await userService.getByKey({ _id: params.userId });
let room = await matchService.findUserInRoom(user._id);
let match = await matchService.findMatch(params.userId);

但是现在我正在尝试的是使用Promise.all。像

let [user, room, match ] = await Promise.all([firstPromise, secondPromise, thirdPromise])

我只是不知道该怎么做,所以尝试了很多,但没有找到参考。因为我的第二个承诺依赖于第一个承诺的响应,只是卡住了如何通过这种方式

1 个答案:

答案 0 :(得分:2)

您不能同时调用第一个和第二个异步API,但是第三个异步的是独立的,因此您可以像下面这样进行操作:

async function getRoom(params) {
   const user = await userService.getByKey({ _id: params.userId });
   const room = await matchService.findUserInRoom(user._id);
   return [user, room];
}

const [[user, room], match] =  await Promise.all([
   getRoom(params),
   matchService.findMatch(params.userId)
]);
相关问题