5

Promesas

Una promesa es un objeto, el cual se puede interpretar como un valor que puede estar disponible, ahora, en el futuro, o nunca. Puede sonar confuso, pero sigue leyendo veras que lo vas a entender. Dicho así entonces una promesa nos puede devolver la respuesta que esperamos o algún error, si recibimos la respuesta esperada entonces vamos a resolver, en cualquier otro caso lo que haremos será rechazar.

Esta es la estructura básica de una promesa:

![](structPromise.PNG

Tenemos el objeto Promise, este recibe una función la cual llamaremos función ejecutora. La función ejecutora tendrá como parámetros dos funciones, resolve y reject. En la función ejecutora lo que nosotros haremos será validar la respuesta, es decir determinar si recibimos la respuesta esperada mandamos llamar la función resolve, si ocurrió algún error mandamos llamar** reject**.

![](structPromise2.PNG

Podemos escribirlo de una forma mas sencilla con funciones flecha:

![](promiseArrow.png

Así de simple, ahora ¿Cómo es que se implementa?

![](implementandoPromesa.png

• Primero creamos una constante la cual será una función flecha, y esta función flecha retorna nuestra promesa
• Creamos el objeto **Promise **
• Le pasamos nuestra función ejecutora
• Validamos que es lo que pasara si recibimos una respuesta o si tenemos un error (si es que vienes de otro lenguaje como Java o C#, tómalo como lo si estuvieras levantando una excepción, es la misma lógica)
• Por último solo ejecutamos nuestra función, y lo hacemos de la siguiente manera:

![](then.png

Ejecutamos la función, con then pasamos la función que se ejecuta en caso de recibir la respuesta y con catch pasamos la función que se ejecuta si ocurre un error. Seguro que ahora te recuerda mas a cuando levantas excepciones en Java, si no vienes de Java igual veras que es muy sencillo. 😎

Escribe tu comentario
+ 2
1
12801Puntos

Interesante tu artículo, aunque no estoy seguro de si esto lo pusiste a propósito
platzi.png

De no ser así, me llama la atención que las imágenes las ponga así, ¿Será un bug?