javascript - Q Promise 等效于 BlueBird Promise.Bind()

标签 javascript node.js promise q bluebird

几个问题,Q 是否有一个 bind() 方法,如 BlueBird API 中所示还有这张幻灯片 JavaScript Promises ~Kerrick Long ?它是核心 promise /A+ 规范的一部分吗?如果没有,是否有 polyfill 或解决方法?

最佳答案

嗯,Promises/A+ 规范只指定了 .then 的工作方式,所以 .bind 不是 Promises/A+ 规范的一部分。事实上,Promises/A+ 指定 this 值的行为就像一个普通的函数调用,并且 promises 不受约束 - Bluebird 通过返回一个 BoundPromise 来绕过这个限制,它不是一个常规的 promise 并且与其他 promise 无缝互操作图书馆。

没有等效的 Q 功能,一旦 ES6 落地,您将能够使用“粗箭头”=> 以便在词法上绑定(bind) then 中的范围链式:

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

一般来说,这是 Bluebird 相对于 Q 的众多特性之一,没有明显的方法来“填充它”,因为它改变了 .then 的行为 - 你必须重写.then 在 Q 中 promise 并有效地在整个库上创建一个包装器来实现这一点。

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

相关文章:

javascript - TypeError : Cannot read property 'then' of undefined. 当我尝试运行 updatefirst 函数时出现此错误

javascript - 拖放并更改dom中div的父级

javascript - 如果按钮从页面中删除,Google 在登录/注销后抛出 "Cannot read property ' style' of null"错误

javascript - 如何获取某个日期范围内存在的一周中的天数列表(Javascript)

node.js - Express - 无法提供静态文件(404 错误)

javascript - ejs:仅将类 'active' 添加到图片库的第一张图片

javascript - 对 `Promise`和 `then()`执行顺序

java - 使用 Jquery 上传 Excel 文件

javascript - 小鹿交易遗失的藏品

javascript - 在 Javascript 中,嵌入一组 Promise 时 setTimeout 会阻塞吗?