Q Promise Equivalent of BlueBird Promise.Bind()

Q Promise Equivalent of BlueBird Promise.Bind()

本文关键字:Promise Bind of Equivalent BlueBird      更新时间:2023-09-26

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

好吧,Promises/A+规范只指定.then的工作方式,所以.bind不是Promises/A+规范的一部分。事实上,Promises/A+指定this值的行为与普通函数调用类似,并且promise不受绑定-Bluebird通过返回BoundPromise来绕过这一限制,BoundPromises不是常规的promise,并与其他promise库无缝交互。

没有等效的Q功能,一旦ES6着陆,您就可以使用"胖箭头"=>来灵活地绑定then链中的作用域:

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

一般来说,这是Bluebird在Q上拥有的众多功能之一,由于它改变了.then的行为,因此没有明显的方法来"填充"它——你必须在Q promise中覆盖.then,并有效地在整个库上创建一个包装器来实现这一点。