沿着
链出现的Thenable对象总是被解析 —then()
处理程序永远不会接收到 thenable 对象,并且任何 由任一处理程序返回的 thenable 总是在被解析之前被解析 传递给下一个处理程序。这是因为在建造新的 承诺,由onFulfilled
传递的resolve
和reject
函数是 保存,当当前的承诺解决时,相应的功能 将调用履行值或拒绝原因。这 解析逻辑来自于传递的解析器函数executor
构造函数。> Promise()
根据我的理解,承诺并不总是得到解决但也可以被拒绝。
这个文档是什么意思,有错误吗?
我认为您的困惑在于“已解决”一词的使用。 “已解决”的 Promise 或 thenable 并不总是意味着它已经实现。
“已解决”的 Promise 可以被解决(拒绝或实现)或锁定在另一个 Promise 上,并等待另一个 Promise 解决,然后再以相同的实现或拒绝值解决自身。将一个 Promise 锁定到另一个 Promise 也称为一个 Promise resolving 到另一个 Promise。
您还会听到与承诺一起使用的术语“已解决”——这意味着“承诺”已解决或“锁定”以匹配另一个承诺的最终状态,并且进一步解决或拒绝它没有任何效果。 ....通俗地说,“已解决”的承诺通常等同于“已履行”的承诺,但如“状态和命运”中所示,已解决的承诺也可以等待或拒绝
(强调我的)