最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

如何处理异步等待地狱?

运维笔记admin14浏览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 })
]);

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论