Задать вопрос

Как работают промисы и async/await?

1) Есть промис
const getPromise = () => {
	return new Promise((resolve, reject) => {
		...
	});
}

Не очень понимаю, что происходит при вызове const a = getPromise(). Этот вызов же возвращает просто промис и не выполняет логику, которая находится внутри него?

2) Исходя из вопроса выше, есть следующий вопрос:
(async () => {
  const pizzaPromise = selectPizza()
  const drinkPromise = selectDrink()
  await pizzaPromise
  await drinkPromise
  orderItems()
})()

Promise.all([selectPizza(), selectDrink()]).then(orderItems)

Разве async функция идентична вызову Promise.all? Ведь вызов await pizzaPromise и await drinkPromise будут выполняться поочередно, то есть перед тем, как выполнится второй промис, он будет ждать полного выполнения первого. А в свою очерень Promise.all() делает их разрешение параллельно.
  • Вопрос задан
  • 416 просмотров
Подписаться 3 Простой 1 комментарий
Решения вопроса 1
@StockholmSyndrome
Не очень понимаю, что происходит при вызове const a = getPromise(). Этот вызов же возвращает просто промис и не выполняет логику, которая находится внутри него?

выполняет, функция при создании промиса выполняется сразу же

Разве async функция идентична вызову Promise.all? Ведь вызов await pizzaPromise и await drinkPromise будут выполняться поочередно, то есть перед тем, как выполнится второй промис, он будет ждать полного выполнения первого. А в свою очерень Promise.all() делает их разрешение параллельно.

не идентична, всё верно вы понимаете
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы