javascript - Quelle est la différence entre une fonction de rappel et une fonction d'appel normale?
欧阳克
欧阳克 2017-06-26 10:53:07
0
2
1422

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 ?

欧阳克
欧阳克

温故而知新,可以为师矣。 博客:www.ouyangke.com

répondre à tous(2)
淡淡烟草味

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...

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal