2010-09-01 16 views
6

¿Cuál es el significado de la función de devolución de llamada en javascript.función de devolución de llamada que significa

+13

espera. permítanme consultar google ... – Lukman

+3

Lukman, proporcione el enlace, OP nunca ha oído hablar de [Google] (http://www.google.com/search?q=callback+function) en absoluto. Algunos resultados: [Wikipedia sobre Devolución de llamada] (http://en.wikipedia.org/wiki/Callback_%28computer_science%29) [SO sobre devolución de llamada JS] (http: // stackoverflow.com/questions/483073/getting-a-better-understanding-of-callback-functions-in-javascript). – Lekensteyn

+5

No seas tan poco cooperativo, dos ... – Cipi

Respuesta

6

Es solo un nombre para una función que se debe recuperar después de algo.

Se utiliza a menudo con 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 es sólo una función normal, en este caso:

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

de JavaScript "devolución de llamada" es objeto de función que se puede pasar a alguna otra función (como un puntero de función o una función de delegado), y luego se llama cuando se completa la función, o cuando hay una necesidad de hacerlo. Por ejemplo, se puede tener una función principal a la que se puede pasar una función que va a llamar ...

Función principal puede tener este aspecto:

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

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

le llamará así:

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

O:

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

mainFunc(thisIsCallback); 

Esto se utiliza ampliamente en las bibliotecas de javascript. Por ejemplo, la función de animación de jQuery() puede pasar una función como esta para ser invocada cuando finaliza la animación.

Pasar la función de devolución de llamada a alguna otra función no garantiza que se invocará. La ejecución de una llamada de devolución de llamada (calBack()) depende totalmente de la implementación de esa función.

Incluso el nombre de "devolución de llamada" se explica por sí ... =)

3

Además de ser sólo una función, una función de devolución de llamada es un facilitador para el diseño de aplicaciones asíncronas.

En lugar de llamar a una función y esperar los valores de retorno, bloqueando potencialmente el hilo o toda la PC o IU en sistemas de un solo hilo mientras espera, con el patrón asíncrono llama una función, regresa antes finalizando, y luego puede salir de su código (volver al SO que realiza la llamada, estado inactivo, ejecutar ciclo, lo que sea ...). Luego, más tarde, el sistema operativo o la función asíncrona devuelve el código. El código al que desea devolver la llamada suele estar encapsulado en algo llamado "función de devolución de llamada". Hay otros usos, pero este es uno común en los marcos de interfaz de usuario de OOP.

Con el último iOS 4.x, también puede usar "bloques" sin nombre para la devolución de llamada. Pero los lenguajes que no tienen bloques (o cierres anónimos bajo otro nombre) usan funciones para devolución de llamadas de funciones.

+0

Algunos SO antiguos solo usaban direcciones de instrucción global para devoluciones de llamadas (que no necesariamente tenían que ser las direcciones de "funciones"). – hotpaw2

-1

Usted puede simplemente utilizar la instrucción onclick caso por debajo del botón de retroceso:

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

va a trabajar para volver a la página anterior, que se hubiera visitado recientemente.

Cuestiones relacionadas