catch
中then(_,onRejected)
和ES6 Promise
之间的区别是什么?我只知道onRejected
没有处理被拒绝的内部Promise
状态。
Promise.resolve().then(() => {
return new Promise((resolve,reject) => {
throw new Error('Error occurs');
});
},er => console.log(er)); //Chrome throws `Uncaught (in promise)`
Promise.resolve().then(() => {
return new Promise((resolve,reject) => {
throw new Error('Error occurs');
});
}).catch(er => console.log(er)); //Error occurs
答案 0 :(得分:16)
您的第一段代码不会捕获错误,因为错误处理程序位于引发错误的同一.then
关于你的问题
.catch(onRejected);
与
相同.then(null, onRejected);
不确定是什么
.then(_, onRejected);
会做什么,取决于我猜_
答案 1 :(得分:0)
在第一个示例中,您的onRejected
仅适用于Promise.resolve()
。在then(onResolved, onRejected)
中,只调用两个函数中的一个,而不是两个。尝试使用Promise.reject('something').then()
,您将在控制台中打印某些内容。
catch()
适用于您返回的承诺,因此会按预期捕获错误。