Promise.resolve() |
您所在的位置:网站首页 › 前端promise是什么 › Promise.resolve() |
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 |