Middle
Dizi hemen reddedilir hale gelir, ilk .then atlanır. İlk .catch hatayı yakalar Çıktı: Catch 1: Hata1 'Henüz başka bir değer' döndürür, hatayı başarılı bir sonuca dönüştürür. Sonraki .then 'Başka bir değer' alır Çıktı: Then 2: Başka bir değer Sonra yeni bir hata fırlatır: throw new Error('İkinci hata') Dizi tekrar reddedilir. İkinci .catch ikinci hatayı yakalar Çıktı: Catch 2: İkinci hata Hiçbir şey döndürmez → sonuç undefined. Son .then undefined alır Çıktı: Then 3: undefined Selam! ("Hata!") — bu, hemen "Hata!" hatasıyla reddedilen bir promistir. .then(1) — atlanır, çünkü promiss rejected durumda .catch(1) — hatayı yakalar, "Catch 1: Hata!" gösterir ve "VERİLER GERİ DÖNÜYOR" döndürür .then(2) — "VERİLER GERİ DÖNÜYOR" alır, "Tık? VERİLER GERİ DÖNÜYOR" gösterir ve yeni bir hata "İkinci hata" fırlatır .catch(2) — ikinci hatayı yakalar, "Catch 2: İkinci hata" gösterir .then(3) — önceki catch hiçbir şey döndürmediği için undefined alır, "then 3: undefined" gösterir
sobes.tech yapay zeka
AI'dan gelen yanıt
В цепочке промисов, если промис отклонён (rejected), первый .then пропускается, и управление переходит к ближайшему .catch.
- Первый
.catchловит ошибку, выводит сообщение и возвращает значение, превращая ошибку в успешный результат. - Следующий
.thenполучает это значение, выводит его и выбрасывает новую ошибку. - Второй
.catchловит новую ошибку, выводит сообщение, но ничего не возвращает, поэтому результатом становитсяundefined. - Последний
.thenполучаетundefinedи выводит его.
Пример:
Promise.reject('Ошибка!')
.then(() => console.log('Этот then пропускается'))
.catch(err => {
console.log('Catch 1:', err); // Catch 1: Ошибка!
return 'Другое значение';
})
.then(value => {
console.log('Then 2:', value); // Then 2: Другое значение
throw new Error('Вторая ошибка');
})
.catch(err => {
console.log('Catch 2:', err.message); // Catch 2: Вторая ошибка
})
.then(value => {
console.log('Then 3:', value); // Then 3: undefined
});
Таким образом, .catch может преобразовать ошибку в успешный результат, позволяя цепочке продолжаться, а если ошибка выбрасывается снова, цепочка снова становится отклонённой.