Maison  >  Article  >  interface Web  >  Explication détaillée de l'utilisation de la fonction de rappel javascript avec la fonction comme paramètre

Explication détaillée de l'utilisation de la fonction de rappel javascript avec la fonction comme paramètre

伊谢尔伦
伊谢尔伦original
2017-07-25 14:55:531506parcourir

express est l'utilisation de fonctions de rappel qui prennent des fonctions comme paramètres. Si vous ne comprenez pas ce concept, le code de nodejs et express sera un gâchis. Par exemple :

app.use(function(req, res, next) {
    var err = new Error('Not Found');
    err.status = 404;
    next(err);
});

app est un objet, use est une méthode, le paramètre de la méthode est une fonction anonyme avec des paramètres, et le corps de la fonction est donné directement à la fin. Comment comprendre ce code ? Comprenons d'abord le concept de fonction de rappel.
Tout d'abord, vous devez comprendre qu'en js, les fonctions sont aussi des objets, qui peuvent être assignés à des variables et placés en paramètres dans la liste des paramètres de la fonction. Par exemple :

var doSomething = function(a,b)
{
 return a + b;
}

Ce code signifie définir une fonction anonyme Sauf que cette fonction anonyme n'a pas de nom, elle n'est pas différente d'une fonction ordinaire. Affectez ensuite la fonction anonyme à la variable doSomething. Ensuite, nous appelons :

console.log(doSomething(2,3));

Cela affichera 5.

La fonction de rappel est placée dans la liste des paramètres d'une autre fonction (telle que parent), transmise à ce parent en tant que paramètre, puis exécutée quelque part dans le corps de la fonction parent. De manière abstraite, regardez l'exemple :

// To illustrate the concept of callback
var doit = function(callback)
{
    var a = 1,
        b = 2,
        c = 3;
    var t = callback(a,b,c);
    return t + 10;
};
var d = doit(function(x,y,z){
    return (x+y+z);
});
console.log(d);

Définissez d'abord la fonction doit, qui a un rappel de paramètre. Ce rappel est la fonction de rappel et le nom peut être arbitraire. En regardant le corps de la fonction, définissez d’abord trois variables a, b et c. Appelez ensuite la fonction de rappel. Renvoie enfin une valeur.

La fonction doit est appelée ci-dessous. Il convient de noter que lorsque doit a été défini tout à l'heure, le rappel n'était pas défini, donc je ne savais pas à quoi servait le rappel. C'est en fait facile à comprendre. Lorsque nous définissons habituellement une fonction, le paramètre reçoit uniquement un nom, tel que a, et a est utilisé dans le corps de la fonction, mais l'ensemble du processus ne sait pas ce qu'est a uniquement lors de l'appel. function Ensuite seulement, spécifiez la valeur spécifique de a, telle que 2. Avec le recul, 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 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 la 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 renvoie un t, et renvoie enfin un t+10 à d.

Retour à l'exemple d'origine, app.use(...) est un appel de fonction. On peut imaginer qu'une méthode d'utilisation doit avoir été définie auparavant, mais elle n'est pas donnée ici. Une fois que vous comparez ces deux exemples, vous pouvez le comprendre immédiatement.

Lorsque nous utilisons nodejs et express, il nous est impossible de trouver la définition de fonction de chaque méthode ou fonction et d'y jeter un œil. Sachez donc simplement quels paramètres sont transmis au rappel dans cette définition. Ensuite lors de l’appel d’une méthode ou d’une fonction, nous définissons nous-mêmes des fonctions anonymes dans les paramètres pour compléter certaines fonctions.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn