javascript - Was ist der Unterschied zwischen einer Callback-Funktion und einer normalen Aufruffunktion?
欧阳克
欧阳克 2017-06-26 10:53:07
0
2
1425

Die Definition einer Rückruffunktion besteht darin, Funktion b als Parameter zur Ausführung an a zu übergeben. Zu diesem Zeitpunkt habe ich plötzlich eine Frage: Was ist der Unterschied zwischen ihr und dem direkten Aufruf von b in Funktion a?
Ich habe selbst eine Demo geschrieben

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

Es dauert etwa 3 Sekunden, bis das Ausgabeergebnis angezeigt und dann in Form einer Rückruffunktion neu geschrieben wird

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

Das Ausgabeergebnis ist erst nach 3 Sekunden sichtbar.
Ich habe viele Artikel gefunden, in denen erklärt wird, dass die normale Ausführung von Funktion a nicht behindert wird, wenn b als Rückruffunktion von Funktion a ausgeführt wird , die zweite Methode sollte sofort sein Wenn es Hallo Welt ausgibt, liegt es daran, dass ich die falsche Rückruffunktion verwendet habe? Haben Sie immer noch Probleme mit dem Verständnis?

欧阳克
欧阳克

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

Antworte allen(2)
淡淡烟草味

1.性能没有区别
2.回调函数是作为参数传递的,操作更加灵活,比如,你可以定义一个函数c,那可以运行
b(c),当你在函数内运行函数的时候,就失去了变量的灵活性。

漂亮男人

嗯,是你理解错了,调用的效果是一样的。还有 callback.call(this); 画蛇添足,跟 callback() 的 this 是一样的。

回调的好处是依赖倒置,不用修改 a 的代码就可以让 a 调用 c、d、e....

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage