thenable 对象是否总是被解析?

问题描述 投票:0回答:1

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then#description

沿着

then()
链出现的Thenable对象总是被解析
onFulfilled
处理程序永远不会接收到 thenable 对象,并且任何 由任一处理程序返回的 thenable 总是在被解析之前被解析 传递给下一个处理程序。这是因为在建造新的 承诺,由
resolve
传递的
reject
executor
函数是 保存,当当前的承诺解决时,相应的功能 将调用履行值或拒绝原因。这 解析逻辑来自于传递的解析器函数
> Promise()
构造函数。

根据我的理解,承诺并不总是得到解决但也可以被拒绝

这个文档是什么意思,有错误吗?

javascript asynchronous promise
1个回答
1
投票

我认为您的困惑在于“已解决”一词的使用。 “已解决”的 Promise 或 thenable 并不总是意味着它已经实现。

“已解决”的 Promise 可以被解决(拒绝或实现)或锁定在另一个 Promise 上,并等待另一个 Promise 解决,然后再以相同的实现或拒绝值解决自身。将一个 Promise 锁定到另一个 Promise 也称为一个 Promise resolving 到另一个 Promise。

来自 MDN - Promise #Description

您还会听到与承诺一起使用的术语“已解决”——这意味着“承诺”已解决或“锁定”以匹配另一个承诺的最终状态,并且进一步解决或拒绝它没有任何效果。 ....通俗地说,“已解决”的承诺通常等同于“已履行”的承诺,但如“状态和命运”中所示,已解决的承诺也可以等待或拒绝

(强调我的)

© www.soinside.com 2019 - 2024. All rights reserved.