在 Promise 中,reject 和 catch 是处理异步操作失败的两种方式,它们有一些重要的区别:
reject:reject是 Promise 实例的一个方法,用于显式地将 Promise 状态从pending变为rejected,并传递一个拒绝的原因(通常是一个 Error 对象或者一个描述失败情况的值)。一旦 Promise 进入
rejected状态,就会触发该 Promise 链中紧跟在reject后面的第一个catch方法或者接下来的then方法中的失败处理函数(如果有的话)。示例:
let promise = new Promise((resolve, reject) => {
reject(new Error('Something went wrong'));});
promise.catch(error => {
console.error(error);});
catch:catch是 Promise 实例的一个方法,用于注册在 Promise 链中捕获处理异常情况的函数。它只捕获 Promise 状态为rejected的情况。catch方法接收一个回调函数,该函数在 Promise 进入rejected状态时被调用,并且可以访问到被reject传递的拒绝原因。示例:
let promise = new Promise((resolve, reject) => {
throw new Error('Something went wrong');});
promise.catch(error => {
console.error(error);});
区别总结:
触发时机:
reject在 Promise 执行过程中主动调用,显式地将 Promise 状态变为rejected。catch是注册在 Promise 链中的方法,用于捕获到达rejected状态的 Promise。用法:
reject用于在 Promise 执行过程中处理错误并将其传递给后续处理程序。catch用于注册在 Promise 链中捕获错误的回调函数。链式调用:
reject是 Promise 执行器函数中的一个操作,不能像catch一样链式调用,因为它并不返回一个 Promise 对象。catch可以链式调用,允许在 Promise 链中处理多个步骤可能出现的错误。
在实际应用中,通常建议使用 catch 方法来处理 Promise 链中的异常,因为它能够更清晰地将错误处理与链式调用分离开来,使得代码更易读和维护。
原文链接: https://blog.csdn.net/hexadecimal_001/article/details/140362610