En Javascript, les fonctions sont des objets de première classe, ce qui signifie que les fonctions peuvent être utilisées comme des objets avec une gestion de première classe. Puisque les fonctions sont en fait des objets : elles peuvent être "stockées" dans des variables, passées en tant que paramètres de fonction, créées dans des fonctions et renvoyées par des fonctions. Les fonctions étant des objets de première classe, nous pouvons utiliser des fonctions de rappel en Javascript. Découvrons ensemble les rappels.
En termes simples : un rappel fait référence à une fonction qui est appelée après qu'une autre fonction ait terminé son exécution
C'est un un peu plus compliqué Pour parler franchement : en JavaScript, les fonctions sont aussi des objets. Par conséquent, les fonctions peuvent être transmises dans des fonctions en tant que paramètres et peuvent également être renvoyées par d'autres fonctions. Ces fonctions sont appelées fonctions d'ordre supérieur. La fonction passée en paramètre est appelée fonction de rappel.
Parlons de la raison pour laquelle nous avons besoin de rappels ?
Il y a une raison très importante : JavaScript est un langage piloté par les événements. Cela signifie que JavaScript ne cessera pas de s'exécuter en attendant une réponse, mais continuera à s'exécuter tout en écoutant d'autres événements.
Regardons un exemple de base :
function first(){ console.log(1); } function second(){ console.log(2); } first(); second();
Comme vous pouvez vous y attendre, la première fonction est exécutée en premier, puis la deuxième fonction est exécutée - la sortie de la console est la suivante :
// 1 // 2
Mais que se passe-t-il si la fonction contient d'abord du code qui ne peut pas être exécuté immédiatement ?
Par exemple une requête API où l'on doit envoyer une requête puis attendre une réponse ? Pour simuler cette situation, nous utiliserons setTimeout, qui est une fonction JavaScript qui appelle une fonction après un certain temps. Nous retardons la fonction de 500 millisecondes pour simuler une requête API. Le nouveau code ressemble à ceci :
function first(){ // 模拟代码延迟 setTimeout( function(){ console.log(1); }, 500 ); } function second(){ console.log(2); } first(); second();
Maintenant, il n'est pas important de comprendre comment fonctionne setTimeout(). avoir console.log( 1); déplacé à l'intérieur de la fonction de délai de 500 secondes. Alors, que se passe-t-il lorsque la fonction est appelée maintenant ?
first(); second(); // 2 // 1
Même si nous avons appelé la fonction first() en premier, la sortie que nous avons enregistrée est après la fonction second().
Ce n'est pas un problème de JavaScript qui n'exécute pas les fonctions dans l'ordre souhaité, mais un problème de JavaScript qui n'attend pas la réponse de first() avant de passer à second().
Alors pourquoi tu montres ça ?
Parce que vous ne pouvez pas appeler des fonctions les unes après les autres et vous attendre à ce qu'elles s'exécutent dans le bon ordre.
Le rappel est le moyen de garantir qu'un morceau de code est exécuté avant qu'un autre morceau de code ne soit exécuté.
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!