即使在使用 async.series 之后,我的函数也没有按顺序执行
Posted
技术标签:
【中文标题】即使在使用 async.series 之后,我的函数也没有按顺序执行【英文标题】:my functions are not executing in series even after using async.series 【发布时间】:2013-09-20 23:27:54 【问题描述】:var async = require('async');
var connection = require('../../models/connection/connection').connection;
var about_model = require('../../models/about/about_model')(connection);
module.exports =
getAboutInfo: function(req, res)
async.series([
function(callback)
about_model.getDob(req.params.id, function(err, rows)
dob = rows[0].user_dob;
);
callback();
,
function(callback)
console.log(dob);
callback();
], function(err)
if(err) throw err;
else
res.render('about',
title: "About Page",
dob: dob
);
);
【问题讨论】:
请添加一些文字来解释您的预期,实际发生的情况,您尝试解决问题的方法,... 先生,我希望这些函数能够串行执行……但这些函数不能以这种方式工作。在第二个函数中,console.log(dob) 正在打印 undefined.. 我也无法在 res.render 处获得 dob 的值 【参考方案1】:async
函数中的回调点是告诉async
你什么时候完成了。在
function(callback)
about_model.getDob(req.params.id, function(err, rows)
dob = rows[0].user_dob;
);
callback();
您在操作完成之前致电callback
,因此async
认为您已经完成,即使您还没有完成。如果你移动它:
function(callback)
about_model.getDob(req.params.id, function(err, rows)
dob = rows[0].user_dob;
callback();
);
那么它应该可以正常工作。
【讨论】:
以上是关于即使在使用 async.series 之后,我的函数也没有按顺序执行的主要内容,如果未能解决你的问题,请参考以下文章
async.series / async.waterfall在post方法中有效吗?