无论是ES6promise 还是蓝鸟promise 、Qpromise 等等.

如何测试给定对象是否是promise ?

推荐答案

promise 图书馆如何决定

如果它有.then个函数——这就是库使用的only个标准promise .

Promises/A+规范有一个称为thenable的概念,它基本上是"一个具有then方法的对象".promise 将并且应该用THEN方法吸收anything.您提到的所有Promise实现都是这样做的.

如果我们看看specification人:

2.3.3.3如果then是一个函数,则用x作为此函数调用它,第一个参数resolvePromise,第二个参数rejectPromise

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

这种对thenables的处理允许promise实现进行互操作,只要它们公开符合Promises/a+的then方法.它还允许Promises/A+实现用合理的方法"同化"不符合要求的实现.

你该怎么决定

你不应该这样做——而是调用Promise.resolve(x)(Q中的Q(x)),它将always将任何值或外部变量转换为可信任的promise .这比自己进行这些判断更安全、更容易.

really need to be sure?

您可以随时将其运行到the test suite:D

Javascript相关问答推荐

通过JavaScript将CSS与音频大声噪音同步

假设我有2个对象,根据它们,我想要新对象

序列化我的数据并发送httpPost请求后,控制器收到空参数

vue3类型脚本中可能未定义对象''

nPM审计始终发现0个漏洞

如何通过继承contentitable属性的元素捕捉keydown事件?

fs. writeFile()vs fs.writeFile()vs fs.appendFile()

将状态向下传递给映射的子元素

React Code不在装载上渲染数据,但在渲染上工作

有没有可能使滑动img动画以更快的速度连续?

未捕获错误:[]:getActivePinia()被调用,但没有活动Pinia.🍍""在调用app.use(pinia)之前,您是否try 使用store ?""

分层树视图

加载背景图像时同步旋转不显示的问题

编辑文本无响应.onClick(扩展脚本)

try 使用javascript隐藏下拉 Select

如何在不影响隐式类型的情况下将类型分配给对象?

未加载css colored颜色 ,无法将div设置为可见和不可见

钛中的onClick事件需要在两次点击之间等待几秒钟

用于部分字符串的JavaScript数组搜索

如何找到带有特定文本和测试ID的div?