异步篇:识别Promise (方法之一)

如何确定一个值是不是真正的 Promise,或者这个值的行为是不是很类似 Promise ?Promise 是通过 new Promise(…) 创建,那么是不是可以用 instanceof Promise 来检查?

一. 为什么 instanceof 不足以检查 Promise

原因有许多,总结如下:

  1. Promise 值可能是从其他浏览器窗口接收到的,然而接收到的 Promise 可能和当前窗口的框架不同,因此不能识别 Promise 实例。
  2. 库或者框架可能会实现自己的 Promise ,不是使用 原生 ES6 Promise 实现,所以无法检查。
二. 识别 Promise

识别 Promise,可以按照这个思路来识别:有具有 then(…) 方法的对象和函数。比如识别一只鸭子,它看起来像鸭子,可能还不足以识别出来,但是它的叫声也像鸭子,那大概率错不了。识别 Promise 的例子:

if(p !== null && (typeof p 
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值