Чому я не можу просто закинути Error
всередину зворотного виклику виклику і дозволити процесу обробляти помилку так, як ніби вона була в будь-якій іншій області застосування?
Якщо я нічого не роблю, я console.log(err)
нічого не роздруковую і нічого не знаю про те, що сталося. Процес просто закінчується ...
Приклад:
function do1() {
return new Promise(function(resolve, reject) {
throw new Error('do1');
setTimeout(resolve, 1000)
});
}
function do2() {
return new Promise(function(resolve, reject) {
setTimeout(function() {
reject(new Error('do2'));
}, 1000)
});
}
do1().then(do2).catch(function(err) {
//console.log(err.stack); // This is the only way to see the stack
throw err; // This does nothing
});
Якщо зворотні виклики виконуються в основному потоці, чому їх Error
проковтує чорна діра?
.catch((e) => { throw new Error() })
, пишіть .catch((e) => { return Promise.reject(new Error()) })
або просто.catch((e) => Promise.reject(new Error()))
.catch(…)
повертається.