Promise.resolve()

您所在的位置:网站首页 前端promise是什么 Promise.resolve()

Promise.resolve()

2024-05-24 07:37| 来源: 网络整理| 查看: 265

Promise.resolve() 方法用于解决(resolve)一个 Promise 对象,但这与“兑现”(fulfill)或“拒绝”(reject)Promise 对象并不相同。有关术语的定义,请参见 Promise 描述。简而言之,Promise.resolve() 返回一个 Promise 对象,其最终状态取决于另一个 Promise 对象、thenable 对象或其他值。

Promise.resolve() 方法是一个通用方法,支持子类化,这意味着它可以在 Promise 的子类上调用,并且结果会是该子类类型的 Promise 对象。为此,子类的构造函数必须实现与 Promise() 构造函数相同的签名,即接受一个 executor 函数,该函数可以用 resolve 和 reject 回调函数作为参数进行调用。

Promise.resolve() 方法特殊处理了原生 Promise 实例。如果 value 属于 Promise 或其子类,并且 value.constructor === Promise,那么 Promise.resolve() 直接返回 value,而不会创建一个新的 Promise 实例。否则,Promise.resolve() 实际上相当于 new Promise((resolve) => resolve(value)) 的简写形式。

实际上,大部分解决逻辑是由 Promise() 构造函数传递的 resolver 函数实现的,简单概括如下:

如果传入的是一个非 thenable 对象的值,则返回的 Promise 对象将以该值兑现。 如果传入的是一个 thenable 对象,则通过传入一对解决函数作为参数调用该 thenable 对象的 then 方法后得到的状态将作为返回的 Promise 对象的状态。(但是因为原生的 Promise 直接通过 Promise.resolve() 调用,而不创建封装对象,所以不会在原生 Promise 上调用 then 方法。)如果 resolver 函数接收到另一个 thenable 对象,则会再次进行解决,以确保 Promise 对象的最终兑现值永远不会是 thenable 对象。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3