Promise.reject()
Promise.reject()
静态方法返回一个已拒绝(rejected)的 Promise
对象,拒绝原因为给定的参数。
尝试一下
语法
js
Promise.reject(reason)
参数
reason
-
该
Promise
对象被拒绝的原因。
返回值
返回一个已拒绝(rejected)的 Promise
,拒绝原因为给定的参数。
描述
Promise.reject
静态方法返回一个被拒绝的 Promise
对象。通过使用 Error
的实例获取错误原因 reason
对调试和选择性错误捕捉很有帮助。
Promise.reject()
方法是一个通用方法,支持子类化,这意味着它可以在 Promise
的子类上调用,并且结果会是该子类类型的 Promise 对象。为此,子类的构造函数必须实现与 Promise()
构造函数相同的签名,即接受一个 executor
函数,该函数可以用 resolve
和 reject
回调函数作为参数进行调用。Promise.reject()
实际上相当于 new Promise((resolve, reject) => reject(reason))
的简写形式。
与 Promise.resolve()
不同,即使 reason
已经是一个 Promise 对象,Promise.reject()
方法也始终会将其封装在一个新的 Promise
对象中。
示例
使用 Promise.reject()
静态方法
js
Promise.reject(new Error("失败")).then(
() => {
// 不会被调用
},
(error) => {
console.error(error); // Stacktrace
},
);
reject 一个 promise 对象
与 Promise.resolve
不同,Promise.reject
方法不会重用已存在的 Promise
实例。它始终返回一个新的 Promise
实例,该实例封装了拒绝的原因(reason
)。
js
const p = Promise.resolve(1);
const rejected = Promise.reject(p);
console.log(rejected === p); // false
rejected.catch((v) => {
console.log(v === p); // true
});
在非 Promise 构造函数上调用 reject()
Promise.reject()
方法是一个通用方法。它可以在任何实现与 Promise()
构造函数相同签名的构造函数上调用。例如,我们可以在一个构造函数上调用它,并传入 console.log
作为 reject
参数:
js
class NotPromise {
constructor(executor) {
// “resolve”和“reject”函数的行为与原生 Promise 完全不同,但 `Promise.reject()` 方法以相同的方式调用它们。
executor(
(value) => console.log("已解决", value),
(reason) => console.log("已拒绝", reason),
);
}
}
Promise.reject.call(NotPromise, "foo"); // 输出 "已拒绝 foo"
规范
Specification |
---|
ECMAScript Language Specification # sec-promise.reject |
浏览器兼容性
BCD tables only load in the browser