@magary4

Несколько await подряд?

const a = await http.get
const b = await http.get

как будет выполнятся этот код?
на сколько я знаю await это "синтаксический сахар" и оно все-равно будет преобразовано в промисы?
оно создаст 2 промиса и выполнит их одновременно или же создается один промис а второй только когда 1й резолвится?
  • Вопрос задан
  • 536 просмотров
Решения вопроса 1
@dimoff66
Кратко о себе: Я есть
Что означает "преобразовано в промисы"? http.get() в вашем случае это и есть промис.
await - не просто синтаксический сахар, это конструкция языка, которая блокирует любой нижеследующий код внутри асинхронной функции до окончания выполнения промиса, переданного ей параметром.

Соответственно аналог вашего кода без использования await это

http.get().then(a => http.get().then(b => {
  // Здесь дальнейший код
}))


Пример

const p = (resolve, reject) => {
  setTimeout(() => resolve(new Date()), 2000)
}

const syncFn = () => {
  new Promise(p).then(console.log)
  new Promise(p).then(console.log)
}

const asyncFn = async () => {
  const a = await new Promise(p).then(console.log)
  const b = await new Promise(p).then(console.log)  
}

syncFn() 
// Tue Jul 14 2020 15:17:19
// Tue Jul 14 2020 15:17:19

asyncFn()
// Tue Jul 14 2020 15:17:49
// Tue Jul 14 2020 15:17:51
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы