试图了解Express异步中的回调语法

时间:2019-04-23 18:26:08

标签: node.js express mongoose

我正在尝试学习Express,并且对回调的异步语法感到困惑。在下面的代码中,我看不到callback函数在哪里传递给genregenre_books函数。所以真的有两个问题:

  1. 回调函数实际上是传入的(如果是,从哪里传入的)?或

  2. 它们是否引用了Express异步文档中所说的“可选回调”匿名函数,而后者是异步函数的第二个参数?

exports.genre_detail = function(req,res,next) {

    async.parallel({
        genre: function(callback) {
            Genre.findById(req.params.id)
                .exec(callback);
        },

        genre_books: function(callback) {
                Book.find({'genre': req.params.id})
                    .exec(callback);
        },
    }, function(err,results) {
        if (err) {return next(err)}
        if (results.genre==null) {
            var err = new Error ('Genre not found');
            err.status = 404;
            return next(err);
        }
        res.render('genre_detail', {title: 'Genre Detail', genre: results.genre, genre_books: results.genre_books});
    });
}

在猫鼬文档https://mongoosejs.com/docs/api.html#model_Model.findById中,我注意到以下提到的回调语法。这使我认为回调是指异步函数中的第二个参数,但是我在文档的任何地方都看不到它的详细说明和完整语法/正确用法的显示:

// find adventure by id and execute
Adventure.findById(id, function (err, adventure) {});

// same as above
Adventure.findById(id).exec(callback);

0 个答案:

没有答案