Как работают промисы и 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 просмотров
Решения вопроса 1
@StockholmSyndrome
Не очень понимаю, что происходит при вызове const a = getPromise(). Этот вызов же возвращает просто промис и не выполняет логику, которая находится внутри него?

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

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

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

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

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