如何在node.js中扩展q.promise?
我需要用我自己的功能扩展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是
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
在之后为生成别名,然后为生成别名。你试过这个吗?