Los retrasos y los procesos asíncronos a menudo representan un desafío en el desarrollo de software, especialmente cuando se trata de manejar callbacks. Aquí es donde entran en juego los Promises – un concepto potente que te ayuda a mantener la claridad de tu código y a reducir la complejidad de las operaciones asíncronas.
Con este tutorial, te sumergirás en el mundo de los Promises. Verás cómo funcionan y cómo trabajan con la Fetch-API en JavaScript para realizar solicitudes HTTP y procesar las respuestas de manera efectiva. Vamos a explorar juntos las ventajas y los conceptos básicos de los Promises.
Principales conclusiones
- Los Promises sirven para gestionar procesos asíncronos y proporcionar sus resultados en una estructura clara.
- La Fetch-API es un método moderno para realizar solicitudes HTTP que admite Promises de forma nativa.
- Con los métodos then() y catch() puedes trabajar con los resultados y errores de los Promises sin caer en un infierno de callbacks.
Guía paso a paso
Paso 1: Introducción a la Fetch-API
La Fetch-API ofrece una manera simple de realizar solicitudes HTTP. Está disponible en casi todos los navegadores modernos y utiliza Promises para devolver la respuesta de la solicitud. Comienzas llamando a la función fetch().
A continuación, te mostramos un ejemplo de cómo puedes hacer una simple solicitud GET a un servidor para obtener datos HTML. Solo necesitas proporcionar la URL como parámetro.

Paso 2: Procesar la respuesta
Una vez que se completa la operación Fetch, recibirás una respuesta. Esta respuesta es en sí también un Promise, que puedes procesar con el método then(). En este paso, mostrarás cómo obtener el primer estado y los encabezados de la respuesta.
Es importante tener en cuenta que los objetos de respuesta no contienen directamente los datos de la respuesta, sino solo información básica como el estado y los encabezados.
Paso 3: Acceso al cuerpo de la respuesta
Ahora viene la parte emocionante – leer el contenido del cuerpo. Puedes usar el método response.text() para obtener el texto de la respuesta HTTP. Este método nuevamente te devuelve un Promise, que también puedes recuperar con then().
En este paso, explicamos que leer el texto es un proceso asíncrono, para el cual necesitas nuevamente el concepto de Promise.
Paso 4: Evitar el infierno de callbacks
Si deseas manejar múltiples procesos asíncronos secuencialmente (por ejemplo, hacer fetch y luego leer el texto), podrás ver que no siempre tienes que anidar más y más para procesar los resultados. En cambio, puedes trabajar en el mismo nivel, devolviendo Promises en cada caso.
Esto significa que puedes llamar al método then() dentro del método then() del Promise anterior, lo que mantiene tu código más claro.
Paso 5: Manejo de errores con catch
Los errores son una parte inevitable del desarrollo de software. Con la ayuda del método catch() de los Promises, puedes reaccionar ante errores. Si te encuentras en una situación donde la solicitud falla o experimentas un error de red, se llamará al método catch().
Aquí mostramos cómo manejar elegantemente los errores y hacerlos comprensibles, para poder identificar posibles problemas a tiempo.

Paso 6: Crear tus propios Promises
En este paso aprenderás a crear tus propios Promises. Para ello, usarás el método new Promise(), en el que pasarás una función que determina la lógica asíncrona. Utilizaremos la función setTimeout para simular un retraso y mostrar la devolución de un valor.
Paso 7: Uso de resolve y reject
Dentro del Promise creado, puedes llamar a las funciones resolve y reject para indicar si el Promise se completó con éxito o falló. Esto te da control para gestionar de manera flexible los diferentes flujos de tu aplicación.
Paso 8: Encadenamiento de los Promises
Finalmente, puedes entender que los Promises tienen encadenabilidad. Esto significa que puedes llamar a los métodos then() y catch() de forma secuencial, facilitando aún más el manejo de las operaciones asíncronas y haciéndolo más legible.
Al crear una cadena de Promises, mantienes el control sobre la estructura de tu código, sin importar cuán compleja sea la lógica.
Resumen - Introducción a los Promises de JavaScript
Es evidente que los Promises son una herramienta indispensable en el desarrollo moderno de JavaScript. Promueven un manejo limpio y legible de las operaciones asíncronas y hacen que trabajar con solicitudes HTTP sea sencillo, sin ser abrumado por funciones callback.
Preguntas frecuentes
¿Qué es un Promise?Un Promise es un objeto que representa la eventualidad de un proceso asíncrono y devuelve su resultado una vez que se completa.
¿Para qué sirve la Fetch-API?La Fetch-API se utiliza para realizar solicitudes HTTP de manera simple y eficiente, aprovechando los Promises.
¿Cómo manejo errores en los Promises?Los errores se manejan con el método catch(), que puede seguir a cada Promise.
¿Puedo crear mis propios Promises?Sí, puedes crear tus propios Promises con el método new Promise() y usar las funciones resolve y reject.
¿Son los Promises sincrónicos o asíncronos?Los Promises son asíncronos y permiten que JavaScript siga funcionando mientras espera el resultado de un proceso asíncrono.