#101·promises

链式 promise 状态不一致

作者: pjeby创建于 2019年3月10日更新于 2026年5月20日

一般来说,如果一个 promise 的 getState() 返回 FULFILLEDREJECTED,那么 wait() 会立即返回一个值或错误。 (也就是说,你可以调用 inspect() 在一个未处理的 promise 上,并得到一个有效的答案。) 但是,如果你使用 resolve()reject() 来处理一个 promise,无论是直接还是间接地通过从 then() 处理程序中返回一个 promise,情况就不一样了。在这种情况下,你可以获得一个表面上状态已完成或已被拒绝的 promise,但实际上内部仍处于未处理状态。这似乎违反了 Promises/A+ 规范第 2.3.2.1 条,即"如果 x 处于未处理状态,则 promise 必须保持未处理状态,直到 x 完成或被拒绝。 但是,该库的 promise 实现会过早地解决 promise,而不是按照规范保持其未处理状态。

内容来源: guzzle/promises