如果它有.then
个函数——这就是库使用的only个标准promise .
Promises/A+规范有一个称为then
able的概念,它基本上是"一个具有then
方法的对象".promise 将并且应该用THEN方法吸收anything.您提到的所有Promise实现都是这样做的.
如果我们看看specification人:
2.3.3.3如果
then
是一个函数,则用x作为此函数调用它,第一个参数resolvePromise,第二个参数rejectPromise
它还解释了此设计决策的基本原理:
这种对
then
ables的处理允许promise实现进行互操作,只要它们公开符合Promises/a+的then
方法.它还允许Promises/A+实现用合理的方法"同化"不符合要求的实现.
你不应该这样做——而是调用Promise.resolve(x)
(Q中的Q(x)
),它将always将任何值或外部变量转换为可信任的promise .这比自己进行这些判断更安全、更容易.
您可以随时将其运行到the test suite:D