Загрузка...
Загрузка...
Продолжая работу с платформой, вы принимаете условия Политики конфиденциальности и использование файлов cookie.
👋 Привет! Я Дастан, автор Hack Frontend. Всегда рад профессиональному нетворкингу => добавляйся в LinkedIn.
Проваливание промисов (или Promise Chaining) — это механизм, при котором каждый .then() возвращает новый промис, позволяя выстраивать цепочку асинхронных операций.
По сути, это означает, что результат одного .then() передаётся в следующий .then(), пока не будет достигнут финальный результат.
fetch("/user.json")
.then(response => response.json()) // промис №1
.then(user => fetch(`/users/${user.id}`)) // промис №2
.then(response => response.json()) // промис №3
.then(userData => console.log(userData)) // промис №4
.catch(error => console.error(error)); // обработка ошибок
Здесь каждый
.then()возвращает новый промис, и следующий.then()ждёт его выполнения — именно это и называется проваливанием промисов.
.then() всегда возвращает промис, даже если явно не указан return..then() вернуть значение (не промис), оно автоматически будет обёрнуто в промис..then() выброшено исключение — оно будет передано в ближайший .catch().fetch("/user.json").then(response => {
response.json().then(user => {
fetch(`/users/${user.id}`).then(response => {
response.json().then(userData => {
console.log(userData);
});
});
});
});
Такое "вложенное" использование промисов называется "callback hell" и усложняет чтение и поддержку.
fetch("/user.json")
.then(res => res.json())
.then(user => fetch(`/users/${user.id}`))
.then(res => res.json())
.then(data => console.log(data))
.catch(err => console.error(err));
.then() правильно: возвращайте промисы для создания цепочек.Факт:
async/await — это синтаксический сахар над Promise chaining.