Модуль 11 · Урок 41
Promises, async/await і execution order
Promise представляє eventual completion, а не готове value. Async function завжди повертає Promise; await призупиняє лише dependent continuation, не весь main thread.
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.
Офіційні джерела
Закріпіть матеріал уроку
Три сценарні питання. Для зарахування уроку потрібно дати щонайменше дві правильні відповіді.