11

Siempre leo y escucho este termino en muchos sitios, pero no me queda muy claro a que se refiere cuando se habla de un "callback". No sé si es una función anónima o algo así.

gbianchi
  • 19,675
  • 11
  • 38
  • 58
RodriKing
  • 649
  • 4
  • 10
  • 22

3 Answers3

20

Un callback es una función. Esta función se la das como parámetro a otra función para que cuando termine de ejecutarse llame a tu callback.

Normalmente tu función callback hace algo con el resultado de la función a la que fue pasada. Así no teneés que esperar a que la función que llamas termine para continuar haciendo otras cosas, porque sabés que te va a "llamar de vuelta" cuando tenga los resultados.

Para decirlo de una forma burda, vos le decís a una función:

Función, toma estos parámetros y esta función callback, hacé tu trabajo y cuando termines me avisas ejecutando esta función callback.

Un callback puede ser cualquier función, generalmente se usan funciones anónimas o lambdas pero no es necesario.

Ejemplo de función callback al usar jQuery:

... 
function mostrar(resultados){
     alert(resultados) ;
} 

$.get('/ajax/listado', 'algo',  mostrar(resultados)) ;
...

Cuando el Ajax finaliza, llama a la función callback mostrar().

fedorqui
  • 15,850
  • 17
  • 58
  • 112
Asero82
  • 631
  • 5
  • 5
  • 1
    No solamente cuando termines, un callback puede ser llamado en cualquier punto de la función. Un callback es una característica de la programación funcional. – gugadev Sep 15 '17 at 14:39
  • Es algo asi como las promesas en js cuando tienes la respuesta puede ejecutar un response – Pablo Moraga Sep 13 '19 at 17:22
6

Un Callback es una función que se ejecutará dentro de otra función.

En JS este es un ejemplo:

function saludar(callback) {
 let mensaje = 'Hello world'
 callback(mensaje)
}

saludar(function(str) {
 console.log('Callback invocado!')
 console.log(str)
})

saludar(function(str) {
 str = 'Param cambiado :o'
 console.log('Otro callback invocado!')
 console.log(str)
})

Los callbacks son usados cuando se hacen operaciones asincrónicas, es decir, ejecuciones de código que se realizan en un tipo de "subproceso", y cuando esa ejecución termina, se puede obtener su resultado con un callback.

J.Correa
  • 1,119
  • 1
  • 8
  • 20
1

Complementando la respuesta de los otros usuarios, me gusta utilizar la interpretación visual que ofrece un programa tipo "calculadora".

Tú tienes, en tu calculadora, montones de botones. Desde la más básica con operaciones elementales, hasta las que operan con números complejos. Todas ellas pueden hacer operaciones de todo tipo, y asumiré que sabes usar una calculadora.

  1. Cuando quieres sumar, defines qué es una suma por un sitio
  2. En la calculadora, introduces números hasta que presionas el botón de +
  3. Te sigue pidiendo números hasta que presionas la tecla =
  4. Muestra el resultado de la suma

Pues bien, este ejemplo, aparentemente básico, es una muestra visual de qué es un callback. Cuando tú presionas el botón =, ese botón ejecuta un procedimiento, que determina qué operación tiene que realizar con qué números. Este procedimiento se le denomina "callback", que de forma tosca podremos traducir como "función a la que llama este procedimiento".

Esta idea es muy útil cuando trabajas con interfaces de usuario (GUI) y menús.