【发布时间】:2015-08-16 13:13:44
【问题描述】:
Bluebird 有一个promisifyAll 函数,它“通过遍历对象的属性并创建对象及其原型链上每个函数的异步等效项来承诺整个对象。”
它创建带有后缀Async 的函数。
是否可以完全替换旧功能?被替换的函数就像原来的函数一样工作,除了它们也返回一个 Promise,所以我认为完全替换旧函数应该是安全的。
var object = {};
object.fn = function(arg, cb) { cb(null,1) };
Bluebird.promisifyAll(object);
object.fn // do not want
object.fnAsync // => should replace `object.fn`
有一个选项可以指定自定义后缀选项,但不幸的是它不适用于空字符串
Bluebird.promisifyAll(object, {suffix: ''});
RangeError: suffix must be a valid identifier
【问题讨论】:
-
我认为,您应该在bluebird issues tracker 上发布功能请求。
-
我认为这是不可能的,因为目前的 promisification 确实创建了只调用
this.fn(…)的方法,因此如果您覆盖fn,它们将陷入无限递归。
标签: javascript node.js promise bluebird