Q承诺相当于BlueBird Promise.Bind()

几个问题,Q有一个bindB bind()方法在BlueBird API和这个幻灯片JavaScript承诺〜Kerrick长 ? 它是核心承诺/ A +规范的一部分吗? 如果没有,是否有一个polyfill或解决方法?

那么,Promises / A +规范只是指定了如何工作,所以.bind不是Promises / A +规范的一部分。 实际上,Promises / A +指定this值的行为就像是一个普通的函数调用,而promise并没有被绑定–Bluebird通过返回一个不是普通的promise的BoundPromise来绕过这个限制,并且与其他的promise库无缝地进行交互。

没有相应的Qfunction,一旦ES6登陆,你就可以使用“胖箭头” =>来从词汇上绑定范围:

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

一般来说,这是蓝鸟对Q的许多特性之一,没有明显的方法来“改变”,因为它改变了行为。然后 – 你必须重写。然后在Q promise中有效地创build一个包装器在整个图书馆完成。