La définition d'une fonction de rappel est de passer la fonction b comme paramètre à a pour exécution. À ce stade, b est la fonction de rappel, j'ai soudainement une question, quelle est la différence entre elle et l'appel de b directement dans la fonction a ?
J'ai moi-même écrit une démo
function a(){
b();
console.log('hello world');
}
function b(){
var n = 0;
for(var i = 0;i < 1000000000;i++){
n++;
}
return n;
}
a(); //hello world
Il faudra environ 3 secondes pour voir le résultat de sortie, puis le réécrire sous la forme d'une fonction de rappel
function a(callback){
callback.call(this);
console.log('hello world');
}
function b(){
var n = 0;
for(var i = 0;i < 1000000000;i++){
}
console.log(1);
}
a(b); //hello world
Le résultat de la sortie ne peut être vu qu'après 3 secondes
J'ai trouvé de nombreux articles, qui expliquent tous que lorsque b est exécuté en tant que fonction de rappel de la fonction a, cela n'entrave pas l'exécution normale de la fonction a selon cette logique. , la deuxième méthode devrait être immédiatement Lorsqu'elle affiche hello world, est-ce parce que j'ai utilisé la mauvaise fonction de rappel ? Vous avez toujours du mal à comprendre ?
1. Il n'y a aucune différence de performances
2. La fonction de rappel est passée en paramètre et l'opération est plus flexible. Par exemple, vous pouvez définir une fonction c, qui peut être exécutée
b(c), lorsque vous le faites. exécutez la fonction dans la fonction, la flexibilité variable est perdue.
Eh bien, vous avez mal compris, l'effet d'appeler est le même. Et
callback.call(this);
画蛇添足,跟callback()
c’est pareil.L'avantage des rappels est l'inversion des dépendances. Vous pouvez laisser un appel c, d, e sans modifier le code de a...