Загрузка…
Загрузка…
JavaScript · middle · сложность 5
Promise chaining — это когда вы возвращаете промис (или значение) из .then() / .catch(), и следующий обработчик ждёт результат предыдущего. Цепочка строится последовательно, без «ада колбэков».
Каждый .then() возвращает новый промис. Если колбэк вернул значение — оно становится результатом следующего звена. Если вернул промис — следующее звено ждёт его resolve/reject.
fetch("/api/user")
.then((res) => res.json()) // ждём тело
.then((user) => fetch(`/api/orders/${user.id}`))
.then((res) => res.json())
.then((orders) => console.log(orders))
.catch((err) => console.error(err)); // ловит ошибку из любого звена.then, иначе следующее звено получит undefined..catch..catch цепочка может продолжиться, если ошибка обработана и не проброшена дальше.Promise.resolve(1)
.then((x) => x + 1)
.then((x) => { throw new Error("boom"); })
.catch((e) => 0) // восстановились
.then((x) => x + 10); // 10Цепочка читается линейно: шаг → шаг → шаг. Вложенные success(cb) быстро превращаются в пирамиду и усложняют обработку ошибок.
Итог: chaining — последовательная композиция асинхронных шагов через возврат значений/промисов из .then / .catch.