Promise新增的这个API,应该挺有用

17 阅读1分钟

来源于: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回调作为参数来调用。