我有以下...
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()
之前完成执行?
答案 0 :(得分:14)
使用Promise.all
等待多个并行承诺完成:
let [user, room] = await Promise.all([
User.findOne({ room_id: data.room_id }),
Room.findOne({ room_id: data.room_id })
]);