Recentemente, estou olhando para o Express e o vi em todos os lugares, usando funções de retorno de chamada como parâmetros. Se esse conceito não puder ser entendido, o Código de Nodejs e Express ficará muito confuso. por exemplo:
A cópia do código é a seguinte:
App.use (function (req, res, próximo) {
var err = novo erro ('não encontrado');
err.status = 404;
próximo (err);
});
O aplicativo é um objeto, o uso é um método e o parâmetro do método é uma função anônima com os parâmetros e o corpo da função é fornecido diretamente posteriormente. Como você entende este código? Vamos primeiro entender o conceito de funções de retorno de chamada.
Primeiro de tudo, precisamos entender que, no JS, as funções também são objetos, que podem ser atribuídos a variáveis e podem ser colocados como parâmetros na lista de parâmetros da função. por exemplo:
A cópia do código é a seguinte:
var dosomething = função (a, b)
{
retornar a + b;
}
Este código significa definir uma função anônima. Exceto por não ter nome, essa função anônima não é diferente de uma função comum. Em seguida, atribua a função anônima ao dosomething variável. Em seguida, chamamos:
A cópia do código é a seguinte:
console.log (doSomething (2,3));
Isso produz 5.
A função de retorno de chamada é colocada na lista de parâmetros de outra função (como pai), passada ao pai como um parâmetro e, em seguida, executada em uma determinada posição no corpo da função pai. Para colocá -lo em abstração, veja o exemplo:
A cópia do código é a seguinte:
// para ilustrar o conceito de retorno de chamada
var doit = função (retorno de chamada)
{
var a = 1,
b = 2,
c = 3;
var t = retorno de chamada (a, b, c);
retornar t + 10;
};
var d = doit (função (x, y, z) {
retornar (x+y+z);
});
console.log (d);
Primeiro, defina a função DOIT e há um retorno de chamada do parâmetro. Esse retorno de chamada é a função de retorno de chamada e o nome pode ser levado arbitrariamente. Olhando para o corpo da função, primeiro defina três variáveis a, b e c. Em seguida, chame a função de retorno de chamada. Finalmente, um valor é retornado.
A seguir, é a função doit. Deve -se notar que, quando você definiu o DOIT agora, o retorno de chamada não foi definido, para que você não soubesse para que retorno de chamada. Isso é realmente fácil de entender. Quando definimos uma função, os parâmetros apenas fornecem um nome, como A, usando um corpo de função, mas todo o processo não sabe o que é. Somente quando a função é chamada é especificada, como 2. Olhando para trás, ao ligar para o DOIT, precisamos especificar o que é retorno de chamada. Como você pode ver, essa função completa uma função de soma.
O processo de execução do código acima é:
Chame a função doit, o parâmetro é uma função anônima; Digite o corpo da função do doit, defina primeiro a, b, c e, em seguida, execute a função anônima agora, os parâmetros são A, B, C e retornam A T e, finalmente, retornem um T+10 a D.
Voltando ao exemplo original, App.Use (...) é uma chamada de função. Podemos imaginar que um método de uso deve ter sido definido antes, mas não é fornecido aqui. Ao comparar esses dois exemplos, você pode entendê -los imediatamente.
Ao usar o NodeJS e o Express, é impossível encontrar a definição de função de cada método ou função para dar uma olhada. Então, apenas saiba quais parâmetros são passados para o retorno de chamada nessa definição. Então, ao chamar um método ou função, definimos funções anônimas nos parâmetros para concluir determinadas funções.
Sobre!