Async / Await ждет другого? - PullRequest
0 голосов
/ 25 мая 2020

У меня есть функция asyn c:

const getUser = async (query) => {
  const user = await Users.findOne(query);
  const feed = await Feeds.findOne({ user: user._id });
  console.log("Do this befor await above");

  return { user, feed };
};

Означает ли это, что JS задерживается на каждой строке ожидания, ожидая результата обещания, а console.log("Do this befor await above"); никогда не запускается раньше двух await выше? Возможно ли, что последнее ожидание возвращается быстрее, чем первое, и я получаю следующее:

return {undefined, feed}?

Итак, код после вызова asyn c не блокируется?

getUser();
console.log("Code below is not blocking...");

1 Ответ

2 голосов
/ 25 мая 2020

Предполагая, что findOne действительно возвращает обещание:

Означает ли это, что JS задержки в каждой строке ожидания, ожидая результата обещания

Да

и console.log («Сделайте это до ожидания выше»); никогда не запускается раньше двух ожиданий выше?

Да

Возможно ли, что последнее ожидание возвращается быстрее, чем первое, и я получаю следующее:

Нет. Feeds.findOne даже не вызывается, пока обещание, возвращаемое Users.findOne, не разрешится.

...