【问题标题】:my functions are not executing in series even after using async.series即使在使用 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 的值

标签: node.js asynchronous express


【解决方案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();
            });

        }

那么它应该可以正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-06
    • 1970-01-01
    • 1970-01-01
    • 2018-06-24
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多