Назад к вопросам
Aston
Middle
2
Разбор практического примера с Promise: в каком порядке будут выводиться console.log при использовании цепочки .then/.catch? Что произойдёт если убрать return из catch?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Рассмотрим цепочку Promise с .then и .catch, например:
Promise.reject('error')
.then(() => console.log('then1'))
.catch(() => {
console.log('catch');
// return; // что если убрать return?
})
.then(() => console.log('then2'));
Порядок вывода будет:
catch
then2
Объяснение:
- Promise сразу отклоняется с ошибкой 'error'.
- Первый .then пропускается, так как промис в состоянии rejected.
- Переходит в .catch, который ловит ошибку и выводит 'catch'.
- Если внутри catch есть return (даже без значения), следующий .then получает resolved промис и выполняется, выводя 'then2'.
Если убрать return из catch, то:
- В JavaScript, если функция в .catch не возвращает значение, она возвращает undefined, что считается resolved значением.
- Поэтому следующий .then всё равно выполнится, и 'then2' выведется.
Итог: убрать return из catch не изменит порядок вывода, так как отсутствие return эквивалентно возврату undefined, что переводит цепочку в resolved состояние.
Если же в catch выбросить ошибку или вернуть отклонённый промис, то следующий then не выполнится.