attend que la fonction appelée termine son exécution -> continue son exécution"."/> attend que la fonction appelée termine son exécution -> continue son exécution".">

Maison  >  Article  >  développement back-end  >  Quelle est la différence entre les fonctions de rappel et les fonctions ordinaires ?

Quelle est la différence entre les fonctions de rappel et les fonctions ordinaires ?

怪我咯
怪我咯original
2017-06-19 11:24:553294parcourir

La différence entre la

fonction ordinaire et la fonction de rappel :

appel à la fonction ordinaire : après que le programme appelant émet un appel au fonction ordinaire, l'exécution du programme passe immédiatement à la fonction appelée jusqu'à ce que la fonction appelée termine son exécution, puis revient au programme appelant pour continuer l'exécution. Du point de vue du programme appelant, ce processus est "Appeler --> Attendre la fin de la fonction appelée --> Continuer l'exécution"

Appel de la fonction de rappel : Le programme appelant émet un appel à la fonction de rappel Après cela, sans attendre la fin de l'exécution de la fonction, elle revient immédiatement et continue son exécution. De cette manière, le programme appelant et la fonction appelée sont exécutés en même temps. Lorsque la fonction appelée termine son exécution, la fonction appelée appellera à son tour une fonction prédéfinie pour informer le programme appelant que l'appel de fonction est terminé. Ce processus est appelé rappel (Callback), d'où vient le nom de la fonction de rappel.

Les fonctions ordinaires et les fonctions de rappel sont appelées par d'autres fonctions. La différence réside dans le fait que l'appelant sait exactement ce qu'il appelle. Par exemple :
void func1(){}
void func2(). {}
typedef void (*fp)();//Déclare pointeur de fonction, fp représente un paramètre nul et renvoie un pointeur de fonction de type void
void funcCaller1() {
//Ici func1 peut être considéré comme une fonction normale
func1();//Ici, funcCall1 sait clairement qu'il a appelé func1
>
void funcCaller2(fp funcPtr){
funcPtr( );//Ici, funcCall2 ne sait pas ce qu'il appelle. Il sait seulement qu'il appelle une fonction avec des paramètres vides et un type de retour void
>
void funcCaller3(){
// Ici, funcCaller2 est une fonction ordinaire, func1 est une fonction de rappel
funcCaller2(func1);//Appelle funcCaller2, le paramètre est func1
//Ici, funcCaller2 est une fonction ordinaire, func2 est une fonction de rappel
funcCaller2(func2);//Appel funcCaller2, le paramètre est func2
>

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