【发布时间】:2012-08-04 21:56:39
【问题描述】:
全部。最后我使用 asyncjs 的 waterflow 方法返回 res 值。但是下面的代码返回 undefined 值。
var async = require("async");
User.findBy = function(name,password){
async.waterfall([
function fetch(callback){
db.lrange("users",0,-1,function(err,users){
users.forEach(function(item){
var u = JSON.parse(item);
if ((u.name == name) && (u.password == password)){
console.log(u);
callback(null,u);
return;
}
});
});
callback(null);
}
],function end(err,res){
setTimeout(function(){
// I want to return res value at last.
return u;
},0);
});
};
app.js
// but it returns undefined value.
var user = User.findBy("nobinobiru",a");
你有什么想法吗?请任何帮助。 提前致谢。
【问题讨论】:
-
我不知道 asyncjs,但听起来您正在尝试同步获取结果(这就是
var user =和return所暗示的)。这就是你想要做的吗? -
User.findBy没有返回语句,所以它的返回值为undefined。让它接受回调并调用它。 -
你不能按照你想做的方式去做你想做的事。此外,当您只需要调用一个函数时使用“瀑布”似乎没有必要。
标签: javascript node.js async.js