Técnica para ejecutar varias operaciones asíncronas de forma secuencial asegurando que una tarea comience sólo después de que la anterior haya sido completada con éxito.
Cuando desarrollamos aplicaciones web en Javascript, tarde o temprano necesitaremos ejecutar código asíncrono, y las promesas (Promises en inglés) son la herramienta más poderosa para hacerlo.
Es conveniente usar promesas cuando requerimos un valor que puede no estar disponible inmediatamente, pero que eventualmente se resolverá con un valor o rechazará con un motivo.
Veamos un ejemplo de una promesa:
Al ejecutar la promesa anterior, en determinados casos nos podría interesar ejecutar otra operación en caso que miPromesa terminara de forma exitosa. El encadenamiento de promesas implica utilizar los métodos then() y catch() para manejar el resultado o el error de una promesa y devolver otra promesa. Esta técnica permite ejecutar acciones secuenciales de manera clara y legible.
En el ejemplo anterior, cada then() maneja el resultado de la promesa anterior y devuelve una nueva promesa, lo que permite encadenar múltiples operaciones asíncronas. Si en algún punto se produce un error en alguna promesa, el flujo de ejecución saltará al primer catch() disponible, lo que hace que sea fácil manejar errores en cualquier etapa del encadenamiento.
El ejemplo anterior requiere escribir manualmente la ejecución secuencial de las promesas, pero, ¿cómo hacerlo si tenemos múltiples promesas que hay que ejecutar de forma dinámica? La clave está en añadir cada tarea en un array [], para luego recorrerla mediante un bucle y ejecutar cada tarea:
De este modo encadenamos promesas manera clara, elegante y eficiente. Nos permite controlar el flujo de ejecución y facilitar la composición de operaciones asíncronas.