Questo si adatta alla tua definizione di callback?
-
03-07-2019 - |
Domanda
Definizione di callback:
Una funzione impostata come proprietà all'interno di un componente. E di solito viene chiamato quando si verifica un evento sul Componente.
Ad esempio:
Se desideri visualizzare una finestra di dialogo che dice " Mi è stato fatto clic " quando l'utente fa clic sul componente componenteB , dovresti scrivere un metodo memorizzato come variabile che fa questo:
var mouseDownCallbackFunction = function() {
alert("I was clicked!");
};
Avanti , imposteresti questa funzione all'interno del componente in questo modo ...
// Set the Component to display the dialog when the
// user presses the mouse down on it.
componentB.setMouseDownCallback(mouseDownCallbackFunction);
E questo causerebbe mouseDownCallbackFunction per visualizzare " Mi è stato fatto clic " in una casella di avviso quando si è fatto clic sul componente.
Soluzione
In C, sarebbe un callback valido. Tuttavia non sono così familiare con JavaScript da dire se lo è o no perché non sono sicuro di come le variabili vengono trattate rispetto alle loro posizioni di memoria.
In C / C ++ potresti dichiarare un puntatore vuoto:
void aFunction()
{
do stuff
}
int main()
{
void* myCallback = &aFunction;
componentB.setMouseDownCallback(myCallback);
}
Funzionerebbe.
Tuttavia, nonostante la mia mancanza di conoscenza di JavaScript, lo so
componentB.setMouseDownCallback(function() {
alert("I was clicked!");
};
);
è valido anche.
MODIFICA ha aggiunto una non alla seconda frase: "Non sono così familiare"
Altri suggerimenti
Sì, questo descrive la definizione esatta di un callback ...
In JavaScript, tecnicamente, si tratta di una chiusura , dal momento che può legarsi a qualsiasi variabile nell'ambito cui si fa riferimento.
Ma le chiusure sono solo una migliore forma di callback, quindi sì, questo è un callback. Un callback in C è più primitivo, fornendo solo un riferimento puntatore a una funzione digitata, senza legarsi a nessun contesto.
Sì, un callback è una funzione definita a un livello superiore a quello che viene chiamata. Il codice client crea la funzione, quindi la passa come parametro a componentB
, affinché componentB
possa chiamarla in seguito.
sì, è un callback.