Passt das Ihre Definition eines Rückruf?
-
03-07-2019 - |
Frage
Definition von Rückruf:
Eine Funktion, die als Eigenschaft innerhalb einer Komponente festgelegt ist. Und wird in der Regel aufgerufen, wenn ein Ereignis auf der Komponente auftritt.
Beispiel:
Wenn Sie einen Dialog anzuzeigen, der liest „Ich wurde angeklickt“ , wenn der Benutzer klickt auf die Komponente componentB , würden Sie eine Methode als Variable gespeichert schreiben die tut dies:
var mouseDownCallbackFunction = function() {
alert("I was clicked!");
};
Weiter , können Sie diese Funktion in der Komponente setzen würden, wie so ...
// Set the Component to display the dialog when the
// user presses the mouse down on it.
componentB.setMouseDownCallback(mouseDownCallbackFunction);
Und dies würde dazu führen, mouseDownCallbackFunction angezeigt werden "Ich wurde angeklickt" in einer Warnmeldung, wenn die Komponente geklickt wurde.
Lösung
In C, das wäre ein gültiger Callback sein. Aber ich bin nicht so vertraut mit JavaScript zu sagen, ob es ist oder nicht, weil ich nicht sicher bin, wie Variablen in Bezug auf ihre Speicherstellen behandelt werden.
In C / C ++ Sie einen void-Zeiger erklären könnten:
void aFunction()
{
do stuff
}
int main()
{
void* myCallback = &aFunction;
componentB.setMouseDownCallback(myCallback);
}
funktionieren würde.
Doch trotz meines Mangels an JavaScript-Kenntnisse, ich weiß, dass
componentB.setMouseDownCallback(function() {
alert("I was clicked!");
};
);
ist auch gültig.
Bearbeiten hinzugefügt eine nicht auf den zweiten Satz: "Ich bin nicht so vertraut"
Andere Tipps
Ja, das beschreibt die genaue Definition eines Rückrufes ...
In JavaScript, technisch gesehen, das ist ein Schließung , da es sich auf alle Variablen im Umfang binden können, die referenziert werden.
Aber Verschlüsse sind nur eine bessere Form des Rückrufs, so ja, das ist ein Rückruf. Ein Rückruf in C ist primitiver, in eine typisierte Funktion nur eine Zeigerreferenz bereitstellt, ohne zu jedem Kontext zu binden.
Ja, ein Rückruf ist eine Funktion, die auf einer höheren Ebene definiert ist, als es genannt wird. Ihr Client-Code erstellt die Funktion, dann übergibt sie als Parameter an componentB
, um componentB
es zu nennen später.
Ja, das ist ein Rückruf.