如何处理异步/等待地狱?
我有以下...
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
等待多个并行的承诺完成:
let [user, room] = await Promise.all([
User.findOne({ room_id: data.room_id }),
Room.findOne({ room_id: data.room_id })
]);
如何处理异步/等待地狱?
我有以下...
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
等待多个并行的承诺完成:
let [user, room] = await Promise.all([
User.findOne({ room_id: data.room_id }),
Room.findOne({ room_id: data.room_id })
]);