最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

如何处理异步等待地狱?

IT培训 admin 8浏览 0评论

如何处理异步/等待地狱?

我有以下...

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 })
]);

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论