При регистрации обработчика исключений для необработанных исключений мне интересно, как можно было бы узнать, где это сработало (что-то вроде трассировки стека). Поскольку reject()
происходил асинхронно, я не ожидаю полной трассировки стека, но по крайней мере получить некоторую информацию о том, откуда был вызван reject()
, было бы здорово. e.reason
не дает никаких подробностей, но я бы хотел увидеть фактическое местоположение в коде, который вызвал reject()
. Например, чтобы проверить это, представьте гипотетический пример нескольких reject('oops')
в коде, которые все не обрабатываются. Я буду рад видеть их фактическое местоположение в обработчике исключений.
https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent
window.onunhandledrejection = function(e) {
console.log('where does this originate from?', e.reason, e);
}
new Promise((resolve, reject) => {
setTimeout(() => {
reject('foo');
}, 2000);
});
new Promise((resolve, reject) => {
setTimeout(() => {
reject('foo');
}, 2000);
});