2010-09-01 7 views
6

Quelle est la signification de la fonction de rappel en javascript.fonction de rappel signification

+13

s'accrocher. laissez-moi consulter google ... – Lukman

+3

Lukman, s'il vous plaît fournir le lien, OP peut-être jamais entendu parler de [Google] (http://www.google.com/search?q=callback+function) du tout. Quelques résultats: [Wikipedia sur le rappel] (http://en.wikipedia.org/wiki/Callback_%28computer_science%29) [SO concernant le rappel JS] (http: // stackoverflow.com/questions/483073/getting-a-better-understanding-of-callback-functions-in-javascript). – Lekensteyn

+5

Ne vous sentez pas si peu coopératif vous deux ... – Cipi

Répondre

6

C'est juste un nom pour une fonction qui devrait être rappelée après quelque chose.

Il est souvent utilisé avec XMLHttpRequest:

var x = new XMLHttpRequest(); 
x.onreadystatechange = function(){ 
    if(x.readyState == 4){ 
     callbackfunction(x.responseText); 
    } 
} 
x.open('get', 'http://example.com/', true); 
x.send(null); 

callbackfunction est juste une fonction simple, dans ce cas:

function callbackfunction(text){ 
    alert("I received: " + text); 
} 
13

objet est fonction « callback » de JavaScript qui peut être transmis à une autre fonction (comme un pointeur de fonction ou une fonction de délégué), puis appelé lorsque la fonction se termine, ou quand il est nécessaire de le faire. Par exemple, vous pouvez avoir une fonction principale à laquelle vous pouvez passer une fonction qu'il appellera ...

Fonction principale peut ressembler à ceci:

function mainFunc(callBack) 
{ 
    alert("After you click ok, I'll call your callBack"); 

    //Now lets call the CallBack function 
    callBack(); 
} 

vous appellerez comme ceci:

mainFunc(function(){alert("LALALALALALA ITS CALLBACK!");} 

Ou:

function thisIsCallback() 
{ 
    alert("LALALALALALA ITS CALLBACK!"); 
} 

mainFunc(thisIsCallback); 

Ceci est largement utilisé dans les bibliothèques javascript. Par exemple, la fonction animation() de jQuery peut recevoir une fonction comme celle-ci à appeler lorsque l'animation se termine.

Passer une fonction de rappel à une autre fonction ne garantit pas qu'elle sera appelée. L'exécution d'un appel de rappel (calBack()) dépend totalement de l'implémentation de cette fonction.

Même le nom de « rappel » est explicite ... =)

3

En plus d'être simplement une fonction, une fonction de rappel est un catalyseur pour la conception d'applications asynchrones. Au lieu d'appeler une fonction et d'attendre la ou les valeurs de retour, potentiellement verrouiller le thread ou l'ensemble du PC ou de l'interface utilisateur sur des systèmes à un seul thread pendant que vous attendez, avec le modèle asynchrone que vous appelez une fonction, terminer, puis vous pouvez quitter votre code (retour à l'OS appelant, état inactif, boucle d'exécution, peu importe ...). Plus tard, le système d'exploitation ou la fonction asynchrone appelle votre code. Le code que vous voulez rappeler est généralement encapsulé dans quelque chose appelé "fonction de rappel". Il y a d'autres utilisations, mais ceci est courant dans les frameworks d'interface utilisateur de POO. Avec la version la plus récente d'iOS 4.x, vous pouvez également utiliser des "blocs" sans nom pour le rappel. Mais les langages qui n'ont pas de blocs (ou de fermetures anonymes sous un autre nom) utilisent des fonctions pour les rappels de fonction.

+0

Certains anciens OS utilisaient simplement des adresses d'instructions globales pour les rappels (qui n'avaient pas nécessairement besoin d'être l'adresse de "fonctions". – hotpaw2

-1

Vous pouvez simplement utiliser la déclaration ci-dessous événement onClick du bouton retour:

OnClick="javascript:history.go(-1)" 

il travaillera pour vous ramener à votre page précédente que vous aviez visité récemment.