很少有问题,Q是否具有BlueBird API和此幻灯片JavaScript Promises ~Kerrick Long中所示的bind()方法?它是核心承诺/ A +规范的一部分吗?如果没有,是否有polyfill或解决方法?

最佳答案

好吧,Promises / A +规范仅指定.then的工作方式,因此.bind不是Promises / A +规范的一部分。实际上,Promises / A +指定this值的行为类似于普通的函数调用,并且Promise没有绑定-Bluebird通过返回不是常规Promise的BoundPromise并与其他Promise库无缝互操作来绕过此限制。

没有等效的Q功能,一旦ES6登陆,您就可以使用“ fat arrow” =>来按词法绑定then链中的范围:

this.x = 15;
Q().then(() => console.log(this.x)) // always logs 15


一般而言,这是Bluebird超过Q的众多功能之一,没有明显的方法可以“将其填入”,因为它改变了.then的行为-您必须在Q承诺中覆盖.then并有效地创建整个库的包装器来完成此任务。

关于javascript - BlueBird Promise.Bind()的Q Promise等效项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25509977/

10-11 12:36