после некоторого freecodecamp я начал делать учебник по Express js от MDN (https://developer.mozilla.org/en-US/docs/Learn/Server-side/Express_Nodejs/Displaying_data/Home_page 2) для некоторого бэкэнда.
Я застрял в понимании того, откуда берется обратный вызов в async.parallel и что он представляет.
Если я удалю обратный вызов, сайт не загрузится, поэтому он должен иметь какое-то важное значение, но, к сожалению, у меня нет клея. Вызывает ли он функцию (ошибка, результаты) { res.render(‘index’, […] }), чтобы сделать результат доступным для данных?
var Book = require(’…/models/book’);
var async = require(‘async’);
exports.index = function(req, res) {
async.parallel({
book_count: function(callback) {
Book.countDocuments({}, callback);
},
[...]
[...]
function(err, results) {
res.render('index', {
title: 'Local Library Home',
error: err, data: results
});
});
};
Я думаю, вы должны сначала прочитать этот codeburst.io/…, чтобы понять об асинхронности. Async.parallel требуется некоторое время для его запуска, а затем, когда он получит результат, он передаст результат обратному вызову, и обратный вызов будет вызван для отображения страницы. Если вы удалите обратный вызов, res.render никогда не будет вызывать. Так что он ничего не будет отображать. Ваша клиентская сторона не получает ответа, поэтому ваш сайт не загружается.





Обратный вызов — это общая функция, вызываемая после завершения асинхронного запроса. Это необходимо, потому что эти запросы не блокируют, что означает, что Javascript будет продолжать выполнять другой окружающий код до тех пор, пока не будет вызван обратный вызов. Если вы хотите получить более подробную информацию о том, как они работают в целом, посмотрите здесь, как ранее упоминалось @dnp1204. Надеюсь, это ответило на ваш вопрос.
Трудно понять, что вы спрашиваете здесь. Редактировать вопрос, чтобы четко отформатировать код и показать нам, какие результаты вы получите, и сообщите нам, какие результаты вы ожидаете.