Übersetzen Sie zunächst „Rückruf“ aus der wörtlichen Bedeutung von Rückruf. Es ist verständlich, dass dies ein Mechanismus zum Aufrufen von Funktionen ist.
Wenn wir auf ein Substantiv stoßen, suchen wir möglicherweise zuerst nach Baidu und Google, um zu sehen, wie die offizielle Erklärung lautet
Das Folgende ist die Definition von Callback aus Wikipedia:
Ein Callback ist ein Stück ausführbaren Codes, der als Argument an anderen Code übergeben wird Es wird erwartet, dass das Argument zu einem geeigneten Zeitpunkt zurückgerufen (ausgeführt) wird
Hardübersetzung: Eine Rückruffunktion ist ein ausführbares Codesegment, das als Parameter einer anderen Funktion verwendet wird. Dieses Codesegment wird zu einem geeigneten Zeitpunkt ausgeführt
Beliebte Erklärung: Behandeln Sie die Funktion f2 als eine. Die Parameter werden an die Funktion f1 übergeben und f2 wird zum entsprechenden Zeitpunkt in f1 ausgeführt (ich verwende f1, f2 in allen folgenden Beispielen)
So wir kann ein Callback-Funktionsmuster wie dieses erhalten
function f1(f2) { //f1要执行的一些代码 if (f2 && typeof(f2) === "function") { //对f2做判断是否存在并且是一个函数 f2(); } }
Hier ist zu beachten, dass f2 in den beiden Parametern ein Zeiger auf die Funktion f2 ist, sodass auf f2 keine Klammern folgen können
, und auf f2 innerhalb von f1 müssen Klammern folgen, da wir zu diesem Zeitpunkt f2 aufrufen und ausführen müssen. Um f2()
zu schreiben, instanziieren wir dieses Muster und sehen uns das Ausführungsergebnis an
声明函数function f1(f2) { alert("我是f1");if (f2 && typeof(f2) === "function") { //写上判断是个好习惯f2() } } 执行 f1(function() { alert("我是f2"); }) 结果://"我是f1",“我是f2”
Schauen wir uns den gesamten Funktionsausführungsprozess an. Beim Aufruf von f1(function(){alert( "I am f2");}) übergibt
zunächst eine anonyme Funktion an f1(), und diese anonyme Funktion ist Der Parameter f2 in der deklarierten Funktion wird von oben nach unten ausgeführt und dann f2();
Können wir es so schreiben?
function f1(f2) { alert("我是f1"); if (f2 && typeof(f2) === "function") { f2() } alert("我又是f1 哈哈"); } 执行 f1(function(){ alert("我是f2"); })//结果:我是f1 ,我是f2,我又是1 哈哈
Wenn wir uns die Definition von Rückrufen ansehen, können wir einen Rückruf durchführen. Wir führen ihn aus, wenn wir ihn ausführen möchten, ohne den Ausführungsfluss von f1 selbst zu beeinträchtigen
Aber aus Gründen der Kapselung und Schönheit , die meisten von uns werden es so schreiben
function f1(f2){ if (f2 && typeof(f2) === "function") { settimeOut(function(){f2()},1000) ;//f1执行1s后f2执行} }function f2(){/**/} f1(f2);
Tatsächlich ist die Rückruffunktion nicht so kompliziert. In js kann die Funktion als gewöhnlicher Parameter behandelt werden. Solange Sie danach () hinzufügen, bedeutet dies, dass diese Funktion aufgerufen wird.
Sehen Sie sich das folgende Beispiel noch einmal an
$(function(){ function funcname(param){ //do something //callback param.callback(); } //调用 funcname({ callback:function(){ alert('callback do'); } }); });
Aus dem obigen Beispiel ist auch ersichtlich, dass tatsächlich jedes Mal, wenn eine Funktion definiert wird, die Funktion zum Stapel hinzugefügt wird Container und der Index ist der Funktionsname. Der Standardwert ist unter dem Fenster, sodass Sie die Zeichenfolge dorthin werfen können. Sie können diese Rückruffunktion auch über die Zeichenfolge unter dem Fenster aufrufen.
Mit Parametern können Sie die obige Methode verwenden.
Zum Beispiel ermöglicht ein Beispiel in jQuery
$("#div1").fadeOut("fast",functin(){ $("#div2").fadeIn("slow"); })
, dass #div schnell ausgeblendet und dann #div2 schrittweise angezeigt wird. Es gibt eine große Anzahl von Callback-Funktionen in jQuery
und es gibt eine spezielle Methode zum Verwalten von Rückrufen
jQuery.Callbacks = function( options ) {...}
Lassen Sie mich abschließend über die Rückrufe sprechen, die ich kürzlich in Projekten verwendet habe
Die Funktion einer Hybrid-App ist wahrscheinlich dass ich eine Anfrage an iOS sende und iOS zurückgibt. Gib mir die JSON-Daten und dann analysiere ich die zurückgegebenen Daten und füge sie in die Webseite ein
//首先我写一个javascript和ios通信callback函数(简化)getData(callback){ settimeOut(function(){callback(iso_return)},100); }//然后我向ios发送一个请求function getSinersReuest(){window.location.href="vvmusic://....callback=getSinersData"}/*然后ios截获url中的callback执行getData(getSinersData)返回给我数据;我的getSinersData是我想把ios返回的json插入到页面显示8*/getSinersData(iso_return){ ......... }//当页面加载的时候调用window.onload=function(){ getSinersReuest(); }
Das obige ist der detaillierte Inhalt vonSo passen Sie eine Rückruffunktion in jQuery an. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!