当使用瀑布方法时,async.js返回上一个值
所有。 我使用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");
你有什么主意吗? 请任何帮助。 提前致谢。
在获取函数中调用callback(null); 立即在db.lrange调用之后。 这个调用在这里是不必要的,因为你需要等待db的结果。
此代码应该正常工作:
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); }); };
- Nodejs / Async:如何在代码片段中提到的async.map的iteratee函数中如何工作?
- 从2个mongodb集合中search后,Nodejs进行单个callback
- 使用node.js +asynchronous模块从同步callback创build同步循环
- Node.JS async.parallel混淆| 什么是由async.map返回
- 为什么每个任务的参数在async.waterfall中应该是相同的
- 我可以指定如何处理asynchronousJavaScript库中的错误?
- Map-Reduce in Node
- 使用Hapi&Async的API – 如何清空数组/在“回复”或每个新的“get”之后立即执行?
- NodeJSasynchronous – 即使有一些失败,仍继续执行多个http请求