Promise.reject()
**Promise.reject()
** 静态方法返回一个使用给定原因被拒绝的 Promise
对象。
试一试
语法
js
Promise.reject(reason)
参数
reason
-
此
Promise
被拒绝的原因。
返回值
一个使用给定原因被拒绝的 Promise
。
描述
静态 Promise.reject
函数返回一个被拒绝的 Promise
。出于调试目的和选择性错误捕获,将 reason
设置为 instanceof
Error
是很有用的。
Promise.reject()
是通用的,支持子类化,这意味着它可以在 Promise
的子类上调用,并且结果将是子类类型的 Promise。为此,子类的构造函数必须实现与 Promise()
构造函数相同的签名 - 接受一个单一的 executor
函数,该函数可以用 resolve
和 reject
回调作为参数来调用。Promise.reject()
本质上是 new Promise((resolve, reject) => reject(reason))
的简写。
与 Promise.resolve()
不同,Promise.reject()
始终将 reason
包装在一个新的 Promise
对象中,即使 reason
已经是 Promise
。
示例
使用静态 Promise.reject() 方法
js
Promise.reject(new Error("fail")).then(
() => {
// not called
},
(error) => {
console.error(error); // Stacktrace
},
);
使用 Promise 拒绝
与 Promise.resolve
不同,Promise.reject
方法不重用现有的 Promise
实例。它始终返回一个包装 reason
的新 Promise
实例。
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) {
// The "resolve" and "reject" functions behave nothing like the
// native promise's, but Promise.reject() calls them in the same way.
executor(
(value) => console.log("Resolved", value),
(reason) => console.log("Rejected", reason),
);
}
}
Promise.reject.call(NotPromise, "foo"); // Logs "Rejected foo"
规范
规范 |
---|
ECMAScript 语言规范 # sec-promise.reject |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。