【发布时间】:2014-04-28 05:14:34
【问题描述】:
我真的在 nodejs 中的 Q 模块上苦苦挣扎。
这是我下面的代码。它在 runnable.com 上运行良好,但是当我将它放在我的一个控制器方法中(原样)时,它只是一直在等待,我可以告诉它调用了第一个方法。但它只是一直在等待。我究竟做错了什么。我现在已经花了 2 天时间了 :(
var Q = require('q');
function Apple (type) {
this.type = type;
this.color = "red";
this.getInfo = function() {
console.log(this.color);
return;
};
}
var apple = new Apple('macintosh');
apple.color = "reddish";
var stat = Q.ninvoke(apple, 'getInfo').then(function() { console.log(err) });
更新:
将 Q.ninvoke 更改为 Q.invoke 并使用 Q 的 v2.0,这不再可用。我得到错误调用未定义。
改为使用 Q 的 v1.0,现在以下工作正常。
var Q = require('q');
function Apple(type) {
this.type = type;
this.color = "red";
this.getInfo = function() {
return this.color;
};
}
var apple = new Apple('macintosh');
apple.color = "reddish";
Q.invoke(apple, 'getInfo')
.then(function(color) {
console.log(color);
})
.fail(function(err) {
console.log(err);
});
【问题讨论】:
-
实际上,无论哪种情况,它都不会执行 then 块!请帮忙
-
直接来自 the docs,强调我的:"
ninvoke使用给定的可变参数调用 Node.js 样式的方法,返回一个承诺如果方法返回一个结果,则满足,或者如果它返回一个错误,则被拒绝。” - 你的getInfo()两者都没有,所以当然这永远行不通。 -
@Tomalak getInfo() 是什么意思。
-
文档中的那句话真的再清楚不过了。我什至在评论中将相关部分加粗。
-
那么 void 函数将如何工作?
标签: javascript node.js asynchronous q mean-stack