Callbacks en Javascript

Hola!

Vamos a tratar de forma muy rápida y simple el tema de los callbacks en Javascript (con funciones propias).

Sobre lo que es un Callback no voy a entrar porque si habéis llegado hasta aquí sabréis de que va esto, sino, con una googleada rápida lo tenéis. Básicamente es ejecutar una función que puede ser pasada por parámetro dentro de otra.

Vamos al lio.

Tenemos la función «saludar«, que solo pinta en consola el texto que lleva.

function saludar(){
    console.log('Hola, soy la función saludar')
}

Tenemos también la función «hazAlgo» que lo que hace es pintar en consola el texto y luego ejecutar el parámetro que le pasamos, en este caso, dicho parámetro tiene que ser una función (El underscore lo suelo poner para saber que es un callback). Podemos ponerle el nombre que queramos.

function hazAlgo(_callback){
    console.log('Hola, soy la función ' + arguments.callee.name)
    _callback()
}

arguments.callee.name: sirve para mostrar el nombre de la función en Javascript

Ahora bien, teniendo las funciones ya definidas, para ejecutarlas deberemos escribir el nombre de la función «hazAlgo» pasándole como argumento la función «saludar» tal que:

hazAlgo(saludar)

Y esto nos devolverá:

Hola, soy la función hazAlgo
Hola, soy la función saludar

Primero ejecutará el console log de la función «hazAlgo» y luego ejecutará la función «saludar«.

 



 

BONUS

Si le quisiésemos pasar parámetros a la función que pasamos como callback («saludar«) podemos hacerlo con:

function saludar(parametro){
    console.log('Hola, soy la función saludar', parametro)
}

function hazAlgo(_callback){
    console.log('Hola, soy la función ' + arguments.callee.name)
    _callback('Callback con parámetro')
}

Y nos retornaría:

Hola, soy la función hazAlgo
Hola, soy la función saludar Callback con parámetro

Espero que haya sido fácil 🙂

Happy code!


Tu opinión es importante para mi, ¿Te ha resultado útil este artículo?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*