gpt4 book ai didi

javascript - 如何检查对象是否是 Promise?

转载 作者:IT老高 更新时间:2023-10-28 13:11:50 27 4
gpt4 key购买 nike

无论是ES6 Promise还是Bluebird Promise、Q Promise

如何测试给定的对象是否是 Promise

最佳答案

promise 库如何决定

如果它有一个 .then 函数 - 这是 only 标准 promise 库使用的。

Promises/A+ 规范有一个称为 thenable 的概念,它基本上是“具有 then 方法的对象”。 Promise 将并且应该使用 then 方法来吸收任何东西。您提到的所有 promise 实现都是这样做的。

如果我们查看 specification :

2.3.3.3 if then is a function, call it with x as this, first argument resolvePromise, and second argument rejectPromise

它还解释了此设计决策的基本原理:

This treatment of thenables allows promise implementations to interoperate, as long as they expose a Promises/A+-compliant then method. It also allows Promises/A+ implementations to “assimilate” nonconformant implementations with reasonable then methods.

你应该如何决定

您不应该 - 而是调用 Promise.resolve(x)(Q 中的 Q(x)),这将总是转换任何value 或外部 thenable 成为可信任的 Promise。这比自己执行这些检查更安全、更容易。

真的需要确定吗?

您始终可以通过 the test suite 运行它:D

关于javascript - 如何检查对象是否是 Promise?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27746304/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com