You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Promise状态:resolved与fulfilled——thenable对象是否始终被resolved?

关于Promise then()链中thenable对象的解析疑问

在then()链中出现的thenable对象始终会被resolved
——onFulfilled处理程序永远不会接收到thenable对象,且任一处理程序返回的thenable对象在传递给下一个处理程序前始终会被resolved。这是因为在构造新Promise时,executor传入的resolve和reject函数会被保存,当前Promise敲定后,对应的函数会被调用并传入兑现值或拒绝原因。解析逻辑来自Promise()构造函数传入的解析器函数。

你提到Promise并非始终处于resolved状态,也可能被rejected,这点完全正确。但MDN这段表述并没有错误,它的核心意思是:

  • 当then()链中出现thenable对象时,JS引擎会自动对这个thenable进行解析(执行它的then方法),无论这个thenable最终是兑现还是拒绝,都会被处理后再传递给下一个then的处理函数。
  • 这里的"resolved"不是指Promise最终的状态是resolved(兑现),而是指对thenable对象的解析过程——JS会把thenable包装成标准Promise,等待它的状态敲定,再把结果(兑现值或拒绝原因)传递下去。
  • 举个例子:如果某个onFulfilled返回一个会被reject的thenable,那么下一个then的onRejected会接收到对应的拒绝原因,而不是这个thenable本身。这就是文档说的"始终会被resolved"的含义——指解析过程一定会发生,而非结果一定是resolved状态。

内容的提问来源于stack exchange,提问作者jwa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 06:43:12