Promise的reject方法
reject
方法是Promise对象原型上的一个方法,用于将Promise对象的状态转变为已失败(rejected
)状态。它接受一个参数,该参数表示异步操作的错误原因。
语法
代码语言:javascript复制Promise.reject(reason);
其中,reason
表示异步操作的错误原因。
示例代码
下面是一个示例代码,演示了reject
方法的使用:
function performAsyncTask() {
return new Promise((resolve, reject) => {
setTimeout(() => {
reject(new Error('Async operation failed.'));
}, 2000);
});
}
const promise = performAsyncTask();
promise.catch(error => {
console.error('Error:', error.message); // 输出异步操作的错误原因
});
在上述示例中,我们定义了一个performAsyncTask
函数,它返回一个Promise对象,并模拟了一个异步操作。在异步操作失败时,我们调用reject
方法将Promise的状态设置为rejected
,并传递一个Error
对象作为错误原因。
然后,我们通过.catch()
方法来处理Promise对象的rejected
状态,并输出异步操作的错误原因。
reject方法的特点
reject
方法具有以下特点:
reject
方法是静态方法,可以直接通过Promise.reject()
调用,不需要先创建Promise实例。- 如果传递给
reject
方法的参数是一个Promise对象,则会直接返回该Promise对象,不会创建新的Promise对象。 - 如果不传递参数给
reject
方法,或者传递的参数是undefined
,则会将Promise的状态设置为rejected
,且错误原因为undefined
。
下面是一些示例代码,展示了reject
方法的不同用法:
// 示例1: 直接调用reject方法,创建一个已失败状态的Promise对象
const promise1 = Promise.reject(new Error('Rejected reason'));
promise1.catch(error => {
console.error(error.message); // 输出: Rejected reason
});
// 示例2: 传递一个Promise对象给reject方法
const promise2 = new Promise((resolve, reject) => {
reject(new Error('Inner rejected reason'));
});
const promise3 = Promise.reject(promise2);
console.log(promise2 === promise3); // 输出: true
// 示例3: 不传递参数给reject方法
const promise4 = Promise.reject();
promise4.catch(error => {
console.error(error); // 输出: undefined
});
在上述示例中,我们展示了不同方式使用reject
方法创建和处理Promise对象。