我有以下内容...
let user;
let room;
await (async () => {
user = User.findOne({ room_id: data.room_id });
room = Room.findOne({ room_id: data.room_id });
})();
await console.log(user, room);
我有多个数据库查询,我希望它们是异步的,同时我希望将结果保存到变量中。我尝试了上面的代码,但是一旦到达 console.log
,两个查询都尚未执行。我可以让它工作的唯一方法是将其更改为以下内容...
let user = await User.findOne({ room_id: data.room_id });
let room = await Room.findOne({ room_id: data.room_id });
await console.log(user, room);
是否没有办法让查询异步执行,但在到达 console.log()
之前完成执行?
最佳答案
使用 Promise.all
等待多个并行 Promise 完成:
let [user, room] = await Promise.all([
User.findOne({ room_id: data.room_id }),
Room.findOne({ room_id: data.room_id })
]);
关于javascript - 如何应对 async/await hell ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54585269/