2009-03-05 15 views
5

Definizione di Callback:

una funzione che viene impostata come una proprietà all'interno di un componente. E viene solitamente chiamato quando si verifica qualche evento sul componente.Si adatta alla definizione di callback?

Per esempio:

Se si desidera visualizzare una finestra di dialogo in cui si legge "Mi è stato cliccato" quando l'utente fa clic sul componente componentB, si potrebbe scrivere un metodo memorizzato come una variabile che fa questo :

var mouseDownCallbackFunction = function() { 
    alert("I was clicked!"); 
}; 

Avanti, si dovrebbe impostare 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 cliccato" in una finestra di avviso quando il componente è stato cliccato.

+0

cosa succede quando si esegue questo? – cbrulak

+0

Quando l'utente fa clic sul componente, dopo aver eseguito questo codice, viene visualizzata una finestra di dialogo "Sono stato cliccato" – leeand00

+0

Nota che puoi anche utilizzare lambdas, ovvero le funzioni anonime, che danno un po 'meno codice, come questo: componentB.setMouseDownCallback (function() { avviso ("Sono stato cliccato!"); }); – svinto

risposta

2

In C, sarebbe un callback valido. Tuttavia non sono così familiare con JavaScript per dire se lo è o meno perché non sono sicuro di come le variabili vengono trattate rispetto alle loro posizioni di memoria.

In C/C++ si potrebbe dichiarare un puntatore nullo:

void aFunction() 
{ 
    do stuff 
} 

int main() 
{ 
    void* myCallback = &aFunction; 
    componentB.setMouseDownCallback(myCallback); 
} 

avrebbe funzionato.

Tuttavia, nonostante la mia mancanza di conoscenza JavaScript, so che

componentB.setMouseDownCallback(function() { 
     alert("I was clicked!"); 
     }; 
); 

è valido pure.

EDIT aggiunto un non alla seconda frase: "Io non sono così familiarità"

+0

Grazie! Lavoro in un negozio C++, e sono il loro tizio del web ... questo aiuterà immensamente nel discutere il mio caso! Grazie starko! – leeand00

+0

proprio su, felice di poter aiutare :) – cbrulak

+0

grazie @Victor mi sono appena impegnato :) – cbrulak

-1

sì, questo è un callback.

3

Sì, questo descrive la definizione esatta di un richiamata ...

2

Sì, un callback è una funzione che è definita a un livello superiore a quello che viene chiamato. Il codice cliente crea la funzione, quindi la trasmette come parametro a componentB, in modo che componentB lo chiami in un secondo momento.

2

In JavaScript, tecnicamente, questa è una chiusura, dal momento che può legarsi a qualsiasi variabile di portata che si fa riferimento .

Ma le chiusure sono solo una forma migliore di richiamata, quindi sì è una richiamata. Una callback in C è più primitiva, fornendo solo un riferimento a un puntatore a una funzione digitata, senza alcun vincolo a nessun contesto.

+0

Hmm ... allora mi chiedo come una chiusura è diversa da un callback? – leeand00

+0

... fare domande qui: http://stackoverflow.com/questions/615907/how-is-a-closure-different-from-a-callback – leeand00

+0

L'altra domanda ha una risposta soddisfacente, ed è ciò che intendevo nella mia prima affermazione di riferimento alle variabili di binding di chiusura, rispetto a un callback di C che è solo un punto di funzione. –

Problemi correlati