Модуль 11 · Урок 41

Promises, async/await і execution order

Promise представляє eventual completion, а не готове value. Async function завжди повертає Promise; await призупиняє лише dependent continuation, не весь main thread.

Promise statesthen / catchasync / awaitPromise.all

States і chain contract

Promise pending переходить один раз у fulfilled або rejected; settled охоплює обидва фінальні states. Handler у then виконується later як job/microtask після current stack. Повернений value стає fulfillment наступної ланки, thrown error — rejection.

loadConfig()
  .then((config) => loadBooks(config))
  .then(validateBooks)
  .catch(reportFailure);

Await і concurrency

async function loadAll() {
  const [books, authors] = await Promise.all([
    loadBooks(), loadAuthors()
  ]);
  return { books, authors };
}

Sequential await потрібний, коли next operation залежить від previous result. Незалежні operations запускайте разом, але визначте failure policy: Promise.all rejects при першій rejection, не скасовуючи інші автоматично.

Практика

Заповніть promise trace: predicted order до запуску, states, returned values і rejection path. Не створюйте Promise wrapper навколо API, яка вже повертає Promise.

Офіційні джерела

Практична перевірка · урок 41 з 60

Закріпіть матеріал уроку

Три сценарні питання. Для зарахування уроку потрібно дати щонайменше дві правильні відповіді.

1. Що представляє Promise?
2. Які Promise states фінальні?
3. Коли виконується then handler fulfilled Promise?