Недавно я смотрю на экспресс, и я видел его везде, используя функции обратного вызова в качестве параметров. Если эта концепция не может быть понята, код Nodejs и Express будет очень запутан. например:
Кода -копия выглядит следующим образом:
app.use (function (req, res, next) {
var err = new Error ('не найдена');
err.status = 404;
Next (err);
});
Приложение - это объект, использование - это метод, а параметр метода - это анонимная функция с параметрами, и корпус функции непосредственно дается позже. Как вы понимаете этот код? Давайте сначала поймем концепцию функций обратного вызова.
Прежде всего, мы должны понимать, что в JS функции также являются объектами, которые могут быть назначены переменным и могут быть размещены в качестве параметров в списке параметров функции. например:
Кода -копия выглядит следующим образом:
var dosomething = function (a, b)
{
вернуть A + B;
}
Этот код означает определение анонимной функции. За исключением отсутствия имени, эта анонимная функция ничем не отличается от обычной функции. Затем назначьте анонимную функцию с чем -то. Далее мы называем:
Кода -копия выглядит следующим образом:
Console.log (DOSOMENTE (2,3));
Это выводит 5.
Функция обратного вызова помещается в список параметров другой функции (например, родитель), передается родителю в качестве параметра, а затем выполняется в определенной позиции в корпусе родительской функции. Чтобы поместить это в абстракцию, посмотрите на пример:
Кода -копия выглядит следующим образом:
// Иллюстрировать концепцию обратного вызова
var doit = function (обратный вызов)
{
var a = 1,
b = 2,
c = 3;
var T = обратный вызов (A, B, C);
вернуть T + 10;
};
var d = doit (function (x, y, z) {
вернуть (x+y+z);
});
console.log (d);
Сначала определите функцию DOIT, и есть обратный вызов параметров. Этот обратный вызов - функция обратного вызова, и имя можно воспринимать произвольно. Глядя на корпус функции, сначала определите три переменные A, B и C. Затем вызовите функцию обратного вызова. Наконец, значение возвращается.
Ниже приводится функция DOIT. Следует отметить, что когда вы только что определили DOIT, обратный вызов не был определен, поэтому вы не знали, для чего нужен обратный вызов. Это на самом деле легко понять. Когда мы определяем функцию, параметры дают только имя, например, A, используя в корпусе функции, но весь процесс не знает, что такое. Только когда указана функция, указана, например, 2. Оглядываясь назад, при вызове DOIT нам нужно указать, что такое обратный вызов. Как видите, эта функция завершает функцию SUM.
Процесс выполнения приведенного выше кода:
Вызовите функцию DOIT, параметр является анонимной функцией; Введите корпус функции DOIT, сначала определите A, B, C, а затем выполните анонимную функцию только сейчас, параметры являются A, B, C и верните A T и, наконец, верните A T+10 к D.
Возвращаясь к первоначальному примеру, app.use (...) - это функциональный вызов. Мы можем представить, что метод использования должен был быть определен ранее, но он здесь не дается. Сравнивая эти два примера, вы можете понять их немедленно.
При использовании Nodejs и Express мы не можем найти определение функции каждого метода или функции, чтобы взглянуть. Так что просто знайте, какие параметры передаются в обратный вызов в этом определении. Затем при вызове метода или функции мы определяем анонимные функции в параметрах для выполнения определенных функций.
Над!