Maison >interface Web >js tutoriel >Comprendre la fonction de rappel (callback) dans les compétences javascript_javascript

Comprendre la fonction de rappel (callback) dans les compétences javascript_javascript

WBOY
WBOYoriginal
2016-05-16 16:37:551255parcourir

Je regardais Express récemment, et j'ai vu partout 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 :

Copier le code Le code est le suivant :

app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
suivant(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 affectés à des variables et placés comme paramètres dans la liste des paramètres de la fonction. Par exemple :
Copier le code Le code est le suivant :

var faireQuelquechose = fonction(a,b)
{
renvoyer un b ;
>

Le sens de ce code est de 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 :
Copier le code Le code est le suivant :

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. C'est abstrait, regardons un exemple :

Copier le code Le code est le suivant :

// Pour illustrer la notion de callback
var doit = ​​​​function(callback)
{
var a = 1,
         b = 2,
c = 3;
var t = rappel(a,b,c);
Retour t10;
};
var d = doit(fonction(x,y,z){
Retour (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 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 retournez a t, et enfin revenir A t 10 donne 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.

Fini !

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