Heim  >  Artikel  >  Web-Frontend  >  Detaillierte Erläuterung der Verwendung der Rückruffunktion (Callback) in jquery

Detaillierte Erläuterung der Verwendung der Rückruffunktion (Callback) in jquery

伊谢尔伦
伊谢尔伦Original
2017-06-16 16:41:595392Durchsuche

Als ich selbst Jquery lernte, sah ich ein englisches Wort (Callback) und spürte plötzlich kalten Schweiß auf meinem Rücken. Nach einer kurzen Google-Suche stellte ich fest, dass die ursprüngliche chinesische Übersetzung „Callback“ lautete. Das ist die Callback-Funktion . Ich habe es nicht verstanden, also habe ich die Rückruffunktion gegoogelt und festgestellt, dass die chinesischen Erklärungen im Internet zu „esoterisch“ waren. Ich gab zu, dass ich nicht sehr kompetent war. Nachdem ich ein paar Rückrufbeispiele gelesen habe, scheine ich es ein wenig zu verstehen. Das Folgende ist mein Verständnis der Rückruffunktion. Wenn ich es falsch verstehe, bin ich sehr dankbar.

Beginnen wir zunächst mit der englischen Definition auf der Jquery-Website. Als Chinese fühle ich mich wirklich tragisch. Die Definition eines Rückrufs wird von inländischen „Experten“ interpretiert. Es scheint, dass er nur dann ein Experte ist, wenn er Sie reinbringt. Schwebende Wolken, alles sind schwebende Wolken.

Ein Callback ist eine Funktion, die als Argument an eine andere Funktion übergeben und ausgeführt wird, nachdem ihre übergeordnete Funktion abgeschlossen wurde.

Dies ist die Erklärung in js, ich zähle die Erklärung nicht in anderen Sprachen erklären.

Im wahrsten Sinne des Wortes ist Callback der Aufrufvorgang einer Funktion. Beginnen wir also damit, diesen Aufrufprozess zu verstehen. Funktion a hat einen Parameter, nämlich Funktion b. Wenn Funktion a ausgeführt wird, wird Funktion b ausgeführt. Dann wird dieser Vorgang als Rückruf bezeichnet.

Tatsächlich ist das Chinesische auch leicht zu verstehen: Rückruf, Rückruf, bedeutet Rückruf. Beenden Sie Funktion a im Voraus und rufen Sie Funktion b später auf.

Ein Beispiel aus dem wirklichen Leben: Du schickst deine Freundin nach einem Date nach Hause. Wenn du dich verabschiedest, wirst du auf jeden Fall sagen: „Schick mir eine Nachricht, wenn du nach Hause kommst. Ich mache mir Sorgen um dich.“ ?Dann hat deine Freundin dir tatsächlich eine Nachricht geschickt, nachdem sie nach Hause gekommen war. Junge, du hast eine Chance.

Eigentlich handelt es sich hierbei um einen Rückrufvorgang. Du überlässt deiner Freundin eine Funktion b (und bittest deine Freundin, dir eine Nachricht zu schicken), und dann geht deine Freundin nach Hause. Die Aktion, nach Hause zu gehen, ist Funktion a. Sie muss zuerst nach Hause zurückkehren, den Inhalt von Funktion a und dann Funktion b ausführen, und dann erhalten Sie eine Nachricht.

Eines muss hier klar sein: Funktion b wird in Form eines Parameters an Funktion a übergeben, dann wird Funktion b als Callback-Funktion bezeichnet.

Vielleicht hat jemand Fragen: Muss ich es als Parameter übergeben? Kann ich Funktion b nicht direkt in Funktion a aufrufen? Tatsächlich kann es. Lösen.

e7d221eda9b3ec5e66c3c9b66a98d197

Beispiel für das Verständnis:

<html> 
 
<head> 
 
<title>回调函数(callback)</title> 
<script language="javascript" type="text/javascript"> 
function a(callback) 
{    
    alert("我是parent函数a!"); 
    alert("调用回调函数"); 
    callback(); 
} 
function b(){ 
alert("我是回调函数b"); 
 
} 
function c(){ 
alert("我是回调函数c"); 
 
} 
 
function test() 
{ 
    a(b); 
   a(c); 
} 
 
</script> 
</head> 
 
<body> 
<h1>学习js回调函数</h1> 
<button onClick=test()>click me</button> 
<p>应该能看到调用了两个回调函数</p> 
</body> 
 
</html>

Jeder kann die Rückruffunktion verwenden, aber nachdem Jquery sie gekapselt hat, kann nicht jeder sie verstehen Rückruffunktion.

JS Api erklärt dies: Ein Callback ist eine Funktion, die als Argument an eine andere Funktion übergeben und ausgeführt wird, nachdem ihre übergeordnete Funktion abgeschlossen ist.

Natürlich können wir das tatsächlich in JS tun Probieren Sie die Magie der Rückruffunktionen aus.

Wenn Sie es direkt in Funktion a aufrufen, wird die Rückruffunktion eingeschränkt. Die Verwendung von Funktionen als Parameter hat jedoch die folgenden Vorteile: Wenn Sie a(b) ausführen, wird Funktion b zu einer Callback-Funktion, und wenn Sie auch a(c) ausführen können, wird Funktion c zu einer Callback-Funktion. Wenn Sie die Funktion a(){...;b();} schreiben, verlieren Sie die Flexibilität von Variablen. Hier ist der Code:

<!DOCTYPE HTML> 
<html> 
<head>  
<meta charset="GBK" />
<title>回调函数(callback)</title> 
<script type="text/javascript" src="http://cdn.bootcss.com/jquery/1.9.0/jquery.min.js"></script>
<script language="javascript" type="text/javascript"> 
    var f;
    function d(){
        alert("我是Jquery定义的函数d");
    }
    var e = function(){
        alert("我也是Jquery定义的函数e");
    }
    
    function a(callback) {    
        alert("我是parent函数a!");   
        d(); 
        if (typeof callback === "function"){
            //alert(callback);
            callback(); 
        }
    } 
    function b(){ 
        alert("我是回调函数b");  
      
        d();
        e();
        f();
    } 
    function c(){ 
        alert("我是回调函数c");   
        d();
        e();
        f();
    } 
    function test1() { 
        a(b); 
    } 
    function test2() { 
        a(c); 
    } 
    $(function(){ 
        f = function(){ 
            alert("我是回调函数f");   
        } 
    });
</script> 
</head> 
<body > 
    <h1>学习js回调函数</h1> 
    <button onClick=test1()>test a(b)</button> 
    <button onClick=test2()>test a(c)</button> 
    <p>应该能看到调用了两个回调函数</p> 
    <p > </p> 
</body> 
</html>

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Verwendung der Rückruffunktion (Callback) in jquery. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn