我已经简化了下面代码中的方案,因为我没有足够的空间来解释我的用例,但基本上我是从" catch&#34中抛出一个错误;承诺的块。如何从该catch块传递错误(在下面的示例中,我希望从外部" catch"块中报告错误" try / catch"我把代码包裹起来了:)
var p = new Promise(function(resolve, reject) {
setTimeout(function() {
reject();
}, 1000);
});
try {
p.then(function() {
console.log('promise resolved');
}).catch(function() {
throw new Error('I want to get out of this catch block!');
});
} catch (err) {
console.log('I want to report the error from here' + err.message);
}

答案 0 :(得分:1)
Promise中的catch
处理程序与promise本身一样异步,因此您无法从它们恢复为同步流/异常控制。您传递到.catch
的功能可能会在它退出的try
/ catch
周围之后才会被调用。