@magary4

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

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

как будет выполнятся этот код?
на сколько я знаю await это "синтаксический сахар" и оно все-равно будет преобразовано в промисы?
оно создаст 2 промиса и выполнит их одновременно или же создается один промис а второй только когда 1й резолвится?
  • Вопрос задан
  • 72 просмотра
Решения вопроса 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
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
от 80 000 до 120 000 ₽
Plesk Новосибирск
от 90 000 до 150 000 ₽
Яндекс Москва
от 100 000 до 300 000 ₽
08 авг. 2020, в 21:08
1199 руб./за проект
08 авг. 2020, в 20:02
50000 руб./за проект
08 авг. 2020, в 19:50
1000 руб./за проект