Попытка понять синтаксис обратного вызова в Экспресс-асинхронности - PullRequest
0 голосов
/ 23 апреля 2019

Я пытаюсь изучить Express, и меня смущает асинхронный синтаксис для обратных вызовов.В приведенном ниже коде я не вижу, где функции callback передаются в функции genre и genre_books.Итак, на самом деле два вопроса:

  1. действительно ли передаются функции обратного вызова (и если да, то откуда)?Или

  2. вместо этого они ссылаются на анонимную функцию «необязательный обратный вызов», которая, согласно документации асинхронной экспресс-передачи, является вторым параметром асинхронной функции?

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

В документации mongoose 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...