如何在node.js中扩展q.promise?

如何在node.js中扩展q.promise?,node.js,promise,Node.js,Promise,我需要用我自己的功能扩展q.promise,我尝试了: defer = q.defer(); defer.promise.prototype.funcName = function () { // my function } witch返回以下错误: TypeError:无法设置未定义的属性“funcName” 我应该如何适当地扩展q.promise 这是我的实际问题:我需要的别名。然后()将操作的名称作为参数(而不是函数),并根据内部函数库执行该操作。Q.makePromise是

我需要用我自己的功能扩展q.promise,我尝试了:

defer = q.defer();
defer.promise.prototype.funcName = function () {
    // my function
}
witch返回以下错误:

TypeError:无法设置未定义的属性“funcName”
我应该如何适当地扩展
q.promise



这是我的实际问题:我需要
的别名。然后()
将操作的名称作为参数(而不是函数),并根据内部函数库执行该操作。

Q.makePromise
是您要扩展的主Promise函数。正如@minitech在评论中提到的,可以在

要制作别名,请在
之后加上“
”,然后
只需执行以下操作:

Q.makePromise.prototype.after = Q.makePromise.prototype.then;
然后您可以使用
.after
而不是
。然后

defer = Q.defer();
defer.resolve(1);
defer.promise.after(console.log);
//=> 1
我需要.then()的别名,witch将操作的名称作为参数(而不是函数)获取,并根据内部函数库执行该操作

这将创建一个
.do
函数,该函数接受一个字符串,并在解析promise后将其与值一起显示

Q.makePromise.prototype.do = function(operation){
    return this.then(function(value){
        console.log('Do', operation, 'with', value);
    });
};
那你就可以了

defer = Q.defer();
defer.resolve(1);
defer.promise.do('myoperation');
//=> Do myoperation with 1

对我来说,这听起来像是一场灾难。实际的问题是什么?从源代码判断,
Q.makePromise.prototype.funcName=…
。听起来仍然像
Q.makePromise.prototype
可以工作。@NasserTorabzade如果你能给出一个可复制的例子,我可以提供更多帮助。但是Q有一个叫做
Q.get
。我对这个问题不太了解,我想这是我能做的最好的了offer@minitech它确实有效
Q.makePromise.prototype.after=Q.makePromise.prototype.then
之后为
生成别名
,然后为
生成别名。你试过这个吗?