无论是ES6承诺,还是蓝鸟承诺,Q承诺,等等。
如何测试给定的对象是否为Promise?
发布于 2015-01-03 01:49:25
promise库如何决定
如果它有一个
函数-这是
仅限
使用标准promise库。
Promises/A+规范有一个概念,称为
它基本上就是“一个对象,它有一个
方法“。承诺将并且应该被同化
任何事
使用then方法。你提到的所有promise实现都是这样做的。
如果我们看一下
规格
2.3.3.3如果
是一个函数,调用它时使用x作为this,第一个参数为resolvePromise,第二个参数为rejectPromise
它还解释了此设计决策的基本原理:
这种处理方式
ables允许promise实现进行互操作,只要它们公开符合Promises/A+的
方法。它还允许Promises/A+实现用合理的then方法“同化”不符合规范的实现。
你应该如何决定
你不应该-而是打电话给
(
在Q)中,将
始终
转换任何值或外部
能够成为一个值得信赖的承诺。这比自己执行这些检查更安全、更容易。
真的吗
需要确认吗?
你可以随时运行它
测试套件
:D
发布于 2015-01-04 07:02:28
检查某些内容是否为promise会使代码变得不必要地复杂,只需使用
Promise.resolve(valueOrPromiseItDoesntMatter).then(function(value) {
})
发布于 2015-01-03 01:53:32
if (typeof thing?.then === 'function') {
// probably a promise
} else {
// definitely not a promise
}
https://stackoverflow.com/questions/27746304
复制相似问题