Récemment, je regarde Express, et je l'ai vu partout, en utilisant des fonctions de rappel comme paramètres. Si ce concept ne peut pas être compris, le code de NodeJS et Express sera très confus. Par exemple:
La copie de code est la suivante:
app.use (function (req, res, suivant) {
var err = nouvelle erreur («non trouvé»);
err.status = 404;
suivant (err);
});
L'application est un objet, l'utilisation est une méthode et le paramètre de la méthode est une fonction anonyme avec des paramètres, et le corps de fonction est directement donné plus tard. Comment comprenez-vous ce code? Comprenons d'abord le concept des fonctions de rappel.
Tout d'abord, nous devons comprendre que dans JS, les fonctions sont également des objets, qui peuvent être attribués aux variables et peuvent être placés sous forme de paramètres dans la liste des paramètres de la fonction. Par exemple:
La copie de code est la suivante:
var dosomething = fonction (a, b)
{
retourner a + b;
}
Ce code signifie définir une fonction anonyme. Sauf pour n'ayant aucun nom, cette fonction anonyme n'est pas différente d'une fonction ordinaire. Attribuez ensuite la fonction anonyme à la variable Dosomething. Ensuite, nous appelons:
La copie de code est la suivante:
console.log (dosomething (2,3));
Cela produit 5.
La fonction de rappel est placée dans la liste des paramètres d'une autre fonction (comme le parent), transmise au parent en tant que paramètre, puis exécutée à une certaine position dans le corps de la fonction parent. Pour le mettre en abstraction, regardez l'exemple:
La copie de code est la suivante:
// pour illustrer le concept de rappel
var doit = fonction (rappel)
{
var a = 1,
b = 2,
c = 3;
var t = rappel (a, b, c);
retour t + 10;
};
var d = doit (fonction (x, y, z) {
return (x + y + z);
});
console.log (d);
Définissez d'abord la fonction DOIT et il y a un rappel de paramètres. Ce rappel est la fonction de rappel et le nom peut être pris arbitrairement. En regardant le corps de la fonction, définissez d'abord trois variables a, b et c. Appelez ensuite la fonction de rappel. Enfin, une valeur est renvoyée.
Ce qui suit est la fonction DOIT. Il convient de noter que lorsque vous avez défini DOIT tout à l'heure, le rappel n'était pas défini, vous ne saviez donc pas à quoi sert le rappel. C'est en fait facile à comprendre. Lorsque nous définissons une fonction, les paramètres ne donnent qu'un nom, comme A, en utilisant un corps de fonction, mais l'ensemble du processus ne sait pas ce qu'est un. Ce n'est que lorsque la fonction est appelée est spécifiée, comme 2. En regardant en arrière, lors de l'appel de DOIT, nous devons spécifier ce qu'est le rappel. Comme vous pouvez le voir, cette fonction complète une fonction de somme.
Le processus d'exécution du code ci-dessus est:
Appelez la fonction DOIT, le paramètre est une fonction anonyme; Entrez le corps de fonction de DOIT, définissez d'abord A, B, C, puis exécutez la fonction anonyme tout à l'heure, les paramètres sont A, B, C, et renvoyez un T, et renvoyez enfin un T + 10 à D.
Pour en revenir à l'exemple d'origine, App.Use (...) est un appel de fonction. Nous pouvons imaginer qu'une méthode d'utilisation doit avoir été définie auparavant, mais elle n'est pas donnée ici. En comparant ces deux exemples, vous pouvez les comprendre immédiatement.
Lorsque vous utilisez NodeJS et Express, il nous est impossible de trouver la définition de la fonction de chaque méthode ou fonction pour jeter un œil. Sachez donc quels paramètres sont passés pour rappeler dans cette définition. Ensuite, lorsque nous appelons une méthode ou une fonction, nous définissons les fonctions anonymes dans les paramètres pour remplir certaines fonctions.
Sur!