gpt4 book ai didi

javascript - 使用 waterfall 方法时,async.js 返回最后一个值

转载 作者:太空宇宙 更新时间:2023-11-04 01:14:38 25 4
gpt4 key购买 nike

全部。我使用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 函数中调用callback(null);紧接着 db.lrange 调用之后。这里不需要这个调用,因为您需要等待数据库的结果。

这段代码应该可以正常工作:

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 - 使用 waterfall 方法时,async.js 返回最后一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11808361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com