Índice

Promesa, el fin de los callbacks

JavaScript es un lenguaje monohilo, por diseño, y se basa en un modelo de eventos no bloqueante. Esto implica que este lenguaje utiliza mucho el mecanismo de acciones asíncronas y se basa en el principio de callback para gestionar este asincronismo.

Una función no asíncrona devuelve un valor o un objeto.

var resultado = suma(4, 8)

El método suma es síncrono y devuelve el resultado de la suma entre sus dos parámetros. La variable resultado vale, a continuación, 12.

Una función JavaScript asíncrona no devuelve ningún resultado, sino que recibe como parámetro una función de callback que se invocará cuando el procesamiento haya terminado. Esta función de callback recibe, por su parte, como parámetro los resultados del procesamiento.

step1(function(value1) {  
    // Procesamiento que se realiza cuando termina la ejecución de la función 
});

El método step1 es asíncrono y recibe como parámetro una función de callback. Esta se invoca cuando termina la ejecución de la acción asíncrona y recibe como parámetro el valor resultante de la acción.

Si bien este mecanismo funciona, resulta algo difícil de utilizar cuando es necesario manipular varias funciones asíncronas, por ejemplo para realizar llamadas encadenadas o en paralelo, o bien cuando es deseable implementar una gestión de errores globales a varias llamadas de funciones ...