来源于:MDN
Promise.withResolver()
这个Promise
的静态方法返回一个对象,其包含一个新的Promise对象
和两个函数
,用于解决和拒绝它,对应于传给Promise()构造函数执行器的两个参数。
使用
使用语法
Promise.withResolvers()
参数
无
返回值
包含以下属性的普通对象:
- promise - 一个Promise对象.
- resolve - 一个函数,用于解决该Promise.
- reject - 一个函数,用于拒绝该Promise,.
描述
Promise.withResolvers()
完全等同于以下代码:
let resolve, reject;
const promise = new Promise((res, rej) => {
resolve = res
reject = rej
})
使用Promise.withResolvers()
关键的区别在于解决和拒绝函数现在与Promise本身处于同一个作用域。而不是在执行器中被创建并一次性使用。这可能使得一些更高级的用例成为可能。例如在重复事件中重用他们。特别是在处理流和队列的时候,这通常也意味着相比在执行器内包装大量逻辑,嵌套会更少。
Promise.withResolvers()
是通用的且支持子类化,这意味着它可以在Promise的子类上调用,结果将包含一个该子类型的promise。要做到这一点,子类的构造函数必须实现与Promise()
构造函数相同的签名,接受一个单独的executor
函数。该函数可以用resolve和reject回调作为参数来调用。