Как бороться с асинхронностью / ожиданием ада? - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть следующее ...

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()?

1 Ответ

0 голосов
/ 08 февраля 2019

Используйте Promise.all, чтобы дождаться завершения нескольких параллельных обещаний:

let [user, room] = await Promise.all([
  User.findOne({ room_id: data.room_id }),
  Room.findOne({ room_id: data.room_id })
]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...