Was sind jQuery-Hooks und -Rückrufe?

8

Mir fällt es schwer zu verstehen, was genau Callbacks oder Hooks in jQuery sind. Sie scheinen zusammengewürfelt zu sein, aber ich kenne den Unterschied zwischen ihnen nicht.

Aus was ich von anderen Posts über Callbacks verstehe, wie das , ist ein Callback einfach eine Funktion A, das Sie an eine andere Funktion B übergeben, die A aufruft, wenn B einmal fertig ist. (Das kann völlig falsch sein, korrigiere mich wenn es so ist).

Ich habe wirklich keine Ahnung von Hooks, außer der Aussage "Sie sollten einen Hook / Callback verwenden". Etwas lässt mich bezweifeln, dass sie ähnlich sind ...

    
stinkycheeseman 18.07.2011, 15:21
quelle

2 Antworten

11

Ihre Definition ist eng, aber nicht ausreichend. Ein Callback ist eine Funktion A, die Sie an eine andere Funktion B (oder an ein Objekt B) übergeben, die B an dem entsprechenden Punkt aufrufen wird.

Bei einigen Funktionen ist "der entsprechende Punkt" nach dem Ausführen dieser Funktion, wie Sie es beschreiben.

Viele Funktionen oder Objekte definieren eine Reihe von "bestimmten Punkten" oder Ereignissen, wenn Rückrufe ausgelöst werden können. Wenn Sie beispielsweise ein Steuerelement haben, das sich regelmäßig über AJAX aktualisiert, definiert es möglicherweise ein Ereignis, das bei der Aktualisierung auftritt, ein Ereignis, das nach der Rückkehr der Aktualisierung auftritt, und ein Ereignis, das nach der Anzeige der Ergebnisse auftritt. Für jedes dieser Ereignisse könnten Sie Ihre benutzerdefinierte Funktion übergeben, die beim Auftreten dieses Ereignisses aufgerufen werden sollte.

Diese definierte Menge von Punkten, an denen eine benutzerdefinierte Funktion aufgerufen werden kann, ist das, was Menschen mit "Haken" meinen. Sie sind Orte, an denen Sie Ihre Funktionalität in eine vordefinierte Bibliothek einbinden können.

Bearbeitet zum Hinzufügen:

Das OP hat nach einem einfachen Beispiel für einen Haken gefragt.

Nehmen wir an, ich habe eine Funktion geschrieben, die eine Liste von Benutzernamen annimmt und dazu gedacht ist, die Liste durchzugehen, die Details jeder Person zu durchsuchen und eine Liste von Personenobjekten zurückzugeben.

Vielleicht möchte ich dem Programmierer, der meine Funktion nutzt, die Möglichkeit geben, anzugeben, was passieren soll, wenn ein Benutzername in meiner Datenbank nicht gefunden wird. Ein Programmierer möchte möglicherweise, dass die Funktion einen Fehler verursacht, ein anderer möchte, dass er das fehlende Beispiel ignoriert, ein anderer möchte, dass es in einer anderen Datenbank sucht, ein anderer möchte, dass es ein leeres Personenobjekt erstellt.

Also könnte meine Funktionssignatur etwas wie

sein %Vor%

Wenn ich innerhalb der Funktion auf einen Benutzernamen stoße, den ich nicht in meinen Daten finde, rufe ich einfach

an %Vor%

Jetzt kann der Programmierer die Funktion wie

aufrufen %Vor%

und wenn ich einen fehlenden Benutzernamen ankreuze, rufe ich die Funktion an, die mir übergeben wurde.

Für einen komplexeren Fall muss ich möglicherweise ein Objekt akzeptieren, das mehrere Callback-Funktionen enthält, sodass es wie

aufgerufen werden kann %Vor%

usw. Die Liste möglicher Rückrufe wird von der Funktion definiert und sollte in der API-Dokumentation enthalten sein (zusammen mit Parametern, die an die Rückrufe übergeben werden könnten, usw.). Diese Liste von Rückrufen sind die Haken.

    
Jacob Mattison 18.07.2011, 15:31
quelle
1

Ich würde in dem Kontext erraten, in dem Sie das Wort "gebraucht" gesehen haben. Leute meinen Callbacks, die genau das sind, was Sie denken (im Fall von jQuery sind ein Hook und ein Callback dasselbe).

Ein Rückruf für die Funktion animate () von jQuery wird zum Beispiel ausgeführt, sobald die Animation abgeschlossen ist.

Einige eingebaute Funktionen und andere jQuery-Plugins können mehrere Callbacks für verschiedene Ausführungsstadien definieren. Zum Beispiel kann ein Plugin, das ein Popup-Feld für einen Benutzer anzeigt, einen Rückruf erhalten, wenn der Benutzer auf einen Link klickt, um das Feld anzuzeigen, aber bevor das Feld tatsächlich angezeigt wird (dieser Callback könnte zum Speichern einiger Daten verwendet werden) brauchen, zum Beispiel). Die gleichen Popup-Funktionen können auch eine Rückruffunktion ausführen, wenn die Box wieder geschlossen wird - dieser Callback kann verwendet werden, um eine Änderung an der Seite vorzunehmen oder um beispielsweise einige Daten zu speichern.

    
Dan Smith 18.07.2011 15:29
quelle

Tags und Links