Q承诺BlueBird Promise.Bind()的等价物

时间:2014-08-26 15:45:53

标签: javascript node.js promise q bluebird

很少有问题,Q在BlueBird API和此幻灯片JavaScript Promises ~Kerrick Long中是否有bind()方法?它是Core Promise / A + Spec的一部分吗?如果没有,是否有填充或解决方法?

1 个答案:

答案 0 :(得分:4)

嗯,Promises / A +规范仅指定.then的工作原理,因此.bind不是Promises / A +规范的一部分。实际上,Promises / A +指定this值的行为类似于普通函数调用,并且promises不受约束 - Bluebird通过返回一个不是常规promise的BoundPromise来绕过这个限制,并与其他promise库无缝地进行交互。 / p>

没有等效的Q功能,一旦ES6登陆,你就可以使用“胖箭”=>来词汇绑定then链中的范围:

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

一般来说,这是Bluebird在Q之上的众多功能之一,没有明显的方法来“填充它”,因为它改变了.then的行为 - 你必须覆盖{{1}在Q中承诺并有效地在整个库上创建一个包装器来实现它。