я задаюсь вопросом, почему внешний улов обратного вызова не вызывается в этом примере:Bluebird.js: Re-Бросать ошибку в поймать обратного вызова не пойман снова
var returnPromise = function() {
return new Promise(function (resolve, reject) {
resolve('promise return value');
})
};
returnPromise().then(function() {
returnPromise().then(function() {
throw new Error('hello');
}).catch(function (err) {
console.log('got inner error', err);
return Promise.reject(err);
//throw err;
});
}).catch(function (err) {
console.log('got outer error', err);
});
Я пытался бросить пойманную ошибку снова а также вернуть отклоненное обещание, но в обоих случаях внешний обратный вызов не вызывается.
Может ли кто-нибудь сказать мне, почему?
живой пример с использованием bluebird.js 3.0.2: http://codepen.io/jjd/pen/wMqEpR?editors=001
Большое спасибо за этот быстрый ответ! Оказывается, я забыл вернуть внутреннее обещание в моем примере, поэтому перехват ошибки не сработал. Вот почему я попытался вернуть отклоненное обещание, но, как вы уже сказали, это не фактическая ошибка и, следовательно, не пойман. Понял :) – Jesse