2 min de lectura

Promesas en JS (Promises)

¿Qué son las promesas en JS?

Las promesas en JS, principalmente, representan algo que puede llegar a suceder en un futuro o nunca. Además, que se ejecute, no quiere decir que obtendremos el resultado esperado.

¿Cuál es el propósito de las promesas en JS?

Se utiliza para computaciones asíncronas. Su principal propósito es evitar el llamado “callback hell“, código complejo y difícil de mantener. Además, se ahorran líneas de código e indentación.

Un ejemplo de promesas en JS

Imaginemos que cumplimos años en 1 mes y nuestra madre nos dice que nos va a regalar nuestro videojuego favorito. Eso, precisamente, es nuestra promesa.

Cuando llegue nuestro cumpleaños, se ejecutará dicha promesa, sin embargo, no quiere decir que se cumplirá correctamente. En nuestro ejemplo, pueden pasar dos cosas:

  1. Nos regala el juego que queríamos.
  2. No tenemos el regalo que deseábamos y obtenemos una razón.

Creando promesas en JS

Se utiliza el constructor de Promise y se pasa una función con dos parámetros, resolve y reject, que nos permite indicar si ésta se resolvió o se rechazó.

Código: www.platzi.com

Lo que se hace en ese fragmento de código, es crear una nueva promesa que se va a ejecutar luego de 1 segundo. Consiste en generar un número aleatorio y preguntar si ese número es mayor a 5. Si lo es, la promesa se considera como cumplida correctamente, de lo contrario, se considera rechazada y se obtiene un error.

Estados de las promesas en JS

Se puede hablar de que existen 3 tipos de estado:

  • Pendiente
  • Resuelta
  • Rechazada

Cuando se crea una promesa, por defecto, está pendiente. Cuando se cumple pasa a estar resuelta y cuando hay un error, pasa a estar rechazada.

En el fragmento de código anterior, cuando la promesa se encuentra resuelta, se ejecuta la función que pasamos en el método .then, si se encuentra rechazada, entonces se ejecuta la función en el método .catch.

 

Deja tus comentarios

This site uses Akismet to reduce spam. Learn how your comment data is processed.