= new Promise((resolve, reject)=>{
reject('reject');
});
promise.then(result=>{
console.log('Это в консоль не выходит')
return result;
}).catch(e=>{
console.log('Ошибка выходит в консоль',e)
}).then(result=>{
console.log('Почему это выходит в консоль ?? ',result)
});
Первый then почему не работает я согласен, потому что не было resolve
Меня смущает почему РАБОТАЕТ второй then ??
Если первый then не работал, то он ничего не успел отправить
Второй then не должен был работать, нигде не было же ведь resolve
потому что вы "исправили" промис и обработали ошибку в кетче Условно говоря Вы бросили ошибку в промисе, потом поймали её и обработали Следовательно дальнейший код ничего не знает о том что где-то в цепочке была ошибка И код выполняется "как и должен"
второй then идёт не от того что первый вернул а от того что в принципе вернулось, даже если это кетч
Хорошо, я заглушил ошибку, но ведь resolve все равно ведь нет не должно же ведь then работать если промис делать абсолютно пустым без ничего, совершенно пустой, тогда оба then не работают а вот в случае если допустить ошибку, потом пофиксить через catch второй then начинает работать!!?? но ведь RESOLVE все равно ведь НЕТ. Почему второй then дергается и работает, это смущает меня
но ведь хорошо, от кетча что то вернулось, но ведь вернулся промис без resolve зачем он дергается и начинает работать, обработка ошибка это равно как resolve(undefined) ??
Обсуждают сегодня