Middle
Lõng muutub kohe rejected-ks, esimene .then jäetakse vahele. Esimene .catch haarab vea Väljund: Catch 1: Viga1 Tagastab 'Teise väärtuse', muutes vea edukaks tulemuseks. Järgmine .then saab 'Teise väärtuse' Väljund: Then 2: Teine väärtus Seejärel viskab uue vea: throw new Error('Teine viga') Lõng muutub uuesti rejected-ks. Teine .catch haarab teise vea Väljund: Catch 2: Teine viga Ei tagasta midagi → tulemus on undefined. Viimane .then saab undefined Väljund: Then 3: undefined Saage tervitust! ("Viga!") — see on promise, mis kohe lükatakse tagasi veaga "Viga!" .then(1) — jäetakse vahele, kuna promise on rejected olekus .catch(1) — haarab vea, näitab "Catch 1: Viga!" ja tagastab "ANDMED TAGASI" .then(2) — saab "ANDMED TAGASI", näitab "Tiker? ANDMED TAGASI" ja viskab uue vea "Teine viga" .catch(2) — haarab teise vea, näitab "Catch 2: Teine viga" .then(3) — saab undefined (kuna eelmine catch ei tagastanud midagi), näitab "then 3: undefined"
sobes.tech AI
Vastus AI-lt
В цепочке промисов, если промис отклонён (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 может преобразовать ошибку в успешный результат, позволяя цепочке продолжаться, а если ошибка выбрасывается снова, цепочка снова становится отклонённой.