Como hacer funciones callbacks en javascript

Básico para estos tiempos es que una funcion acepte como parámetro otra función la cual se ejecutará al finalizar una tarea.. lo que usualmente se conoce en javascript como callbacks..

He creado una función llamada x que recibe 2 parámetros, dentro de la función x hay una validación que determina cuando se ha enviado una función como parámetro que debe ejecutarse y cuando simplemente utilizar el segundo parámetro como otro valor de variable.

x = function(param, callback){
    if ((callback) && (typeof callback === 'function')){
        callback(param);
    }
    else
        console.log(param, callback);
}
 
// ejemplo utilizando 2 parametros de tipo string
x('a', 'b');
 
// ejemplo utilizando 2 parametros, uno de tipo string y el otro siendo una función
x('a', function(val){
    alert(val);
});

Dejo la prueba que funciona, igual y le pueden jugar un poco para probar que más se puede hacer:
http://jsfiddle.net/mfGmU/
Feliz aprendizaje!!

Co-fundador de Qbit Mexhico, usuario de linux, Developer en tecnologías web.. Nicaragüense, centro en basketball, primer centro en rugby y pintor los fines de semana. Ortögrafo y ambientalista psicológico (de escritorio).. ese soy yo!

Si te ha servido compártelo y difunde nuestro blog..

Twitter LinkedIn Flickr YouTube 

5 thoughts on “Como hacer funciones callbacks en javascript

  1. Hola, me podrias ayudar con lo siguiente?

    Estoy usando el framework lungo. Defini la funcion “tieneClaseActivaProfesor” que devuelva true si tiene una clase activa y false en caso contrario.

    Mi problema es como tener acceso desde la funcion “tieneClaseActivaProfesor” a lo que determine (true o false) la funcion guardada en la variable respuesta.

    function tieneClaseActivaProfesor(){
    var data={accion:’tieneClaseActivaProfesor’, idUsuario:sessionStorage.getItem(“idUsuario”)};
    var respuesta = function (json){
    //Aca proceso el json y determino si es true o false.
    }
    Lungo.Service.post(url, data, respuesta, “Json”);
    };

    Muchas gracias, Saludos.

    1. Hola Marcelo, nunca he trabajado con lungo, aunque en algún momento leí e hice mis experimentos.. entonces yo digo que estás mal interpretando el concepto, ya que la variable respuesta no existirá, sino hasta que el método post haya sido invocado y éste haya respondido.

      El tercer parámetro en Lungo.service.post es un callback y es asíncrono, lo que significa que esa línea se ejecutará, así como la siguiente hasta terminar su bloque de código y que en algún momento cuando el servidor responda, es cuando respuesta tendrá valor.

      Saludos

Deja un comentario

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