async.js在使用瀑布方法时返回最后一个值
async.js return last value when use waterfall method
all。最后我使用asyncjs的waterflow方法返回res值。但下面的代码返回未定义的值。
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");
你知道吗?请帮忙。提前谢谢。
在fetch函数中,您调用回调(null);在db.lange调用之后立即执行。这个调用在这里是不必要的,因为您需要等待来自数据库的结果。
这个代码应该可以正常工作:
var async = require("async");
User.findBy = function(name,password){
async.waterfall([
function fetch(callback){
db.lrange("users",0,-1,function(err,users){
var user;
if (users && users.length) {
users.forEach(function(item){
var u = JSON.parse(item);
if ((u.name == name) && (u.password == password)){
console.log(u);
user = u;
return;
}
});
callback(null,user);
} else {
callback(null);
}
});
}
],function end(err,res){
setTimeout(function(){
// I want to return res value at last.
return res;
},0);
});
};
相关文章:
- 从Javascript方法返回全局变量
- Meteor方法在客户端返回null,在客户端运行的相同方法返回正确的值
- AngularJS错误:提供程序必须从$get工厂方法返回值
- 修复AngularJS错误:提供程序必须从$get工厂方法返回值
- 从 javascript 中的对象方法返回一个对象
- 为什么我的Mongoose findAll方法返回500错误.
- 角度方法返回未绘制的代码
- 解析查询查找方法返回对象而不是数组
- Jquery Ajax调用没有't点击操作方法/返回整个HTML页面
- ajax方法返回错误时如何打印输出
- Meteor 方法返回客户端和服务器上的不同对象
- 如何将异步方法返回的值发送到javascript中的另一个异步方法
- Javascript getDay方法返回错误的数字
- Coffeescription类中的方法返回函数而不是字符串
- 当使用Q/promises/异步函数时,如何将一个值从一个类方法返回到另一个类
- find()方法返回具有不需要的属性的对象
- 如何在JSF中将toDataURL方法返回的画布内容作为图像存储在磁盘上
- 从请求.js请求方法返回结果
- jQuery的.children()方法返回'undefined'
- Angularjs 控制器在服务方法返回之前从服务中分配变量