我有一个纯 JavaScript Promise(内置实现或 poly-fill):
var promise = new Promise(function (resolve, reject) { /* ... */ });
根据 规范,Promise 可以是以下之一:
- “解决”和“解决”
- “解决”和“拒绝”
- ‘待办的’
我有一个用例,我希望同步询问 Promise 并确定:
Promise 解决了吗?
如果是这样,Promise 是否已解决?
我知道我可以使用 #then()
来安排在 Promise 更改状态后异步执行的工作。我不是在问如何做到这一点。
这个问题专门针对 Promise 状态的同步询问。我怎样才能做到这一点?
原文由 jokeyrhyme 发布,翻译遵循 CC BY-SA 4.0 许可协议
对于原生 JavaScript 承诺,不存在此类同步检查 API。 用原生的 promise 是不可能做到这一点的。规范没有指定这样的方法。
Userland 库可以做到这一点,如果您针对特定的引擎(如 v8)并且可以访问 _平台代码_(也就是说,您可以在 core 中编写代码),那么您可以使用特定的工具(如私有符号)来实现这一点.这是非常具体的,但不在用户领域。