即使在使用async.series之后,我的函数也没有串行执行

时间:2013-09-16 17:58:14

标签: node.js asynchronous express

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
                });
        });
    }
}

1 个答案:

答案 0 :(得分:2)

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();
            });

        }

然后它应该按预期工作。