很少有问题,Q在BlueBird API和此幻灯片JavaScript Promises ~Kerrick Long中是否有bind()
方法?它是Core Promise / A + Spec的一部分吗?如果没有,是否有填充或解决方法?
答案 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中承诺并有效地在整个库上创建一个包装器来实现它。