onrejected 与 Promise 中的 catch
onrejected vs catch in Promise
ES6 Promise
中的catch
和then(_,onRejected)
有什么区别?我只知道 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
您的第一段代码不会捕获错误,因为错误处理程序与抛出错误的地方相同.then
关于你的问题
.catch(onRejected);
等同于
.then(null, onRejected);
不确定
.then(_, onRejected);
会做,取决于我猜_
是什么
在第一个示例中,您的 onRejected
仅适用于 Promise.resolve()
。在 then(onResolved, onRejected)
中,只会调用两个函数中的一个,而不是两者。尝试使用 Promise.reject('something').then()
,您将在控制台中打印出 something。
catch()
适用于您要返回的承诺,因此会按预期捕获错误。
ES6 Promise
中的catch
和then(_,onRejected)
有什么区别?我只知道 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
您的第一段代码不会捕获错误,因为错误处理程序与抛出错误的地方相同.then
关于你的问题
.catch(onRejected);
等同于
.then(null, onRejected);
不确定
.then(_, onRejected);
会做,取决于我猜_
是什么
在第一个示例中,您的 onRejected
仅适用于 Promise.resolve()
。在 then(onResolved, onRejected)
中,只会调用两个函数中的一个,而不是两者。尝试使用 Promise.reject('something').then()
,您将在控制台中打印出 something。
catch()
适用于您要返回的承诺,因此会按预期捕获错误。