我正在尝试使用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])
我只是不知道该怎么做,所以尝试了很多,但没有找到参考。因为我的第二个承诺依赖于第一个承诺的响应,只是卡住了如何通过这种方式
答案 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)
]);