Introducción a las promesas, resolve, reject, .then y .catch
Tags: javascript
Published: 2020-09-25 00:35:16

Las promesas representan en Javascript la terminación o el fracaso de una operación asíncrona

Actualmente en Javascript la gran mayoría del tiempo vamos a estar consumiendo promesas creadas, pero es importante saber como crear una promesa para entender que es lo que pasa por atrás que muchas veces no sabemos, pongamos un ejemplo,

```javascript
function mostrarUsuarios(){
    new Promise ( (resolve, reject) =>{
        setTimeout(() =>{
           
        console.log('Abajo aparecen los usuarios')
        resolve(['Usuario2', 'Usuario2', 'Usuario3', 'Usuario4'])
       reject('No se encontraron los usuarios')
       
           
        }, 1000)
    })
       
    .then((respuestaUsuarios) =>{
        console.log(respuestaUsuarios)
    })

    .catch((error) => {
        console.log('Hubo el siguiente error en el programa:')
        console.log('error')
    })
}
```

Esto funciona de manera sencilla, para declarar una nueva promesa solo tenemos que instanciarla con new Promise(), la función anónima que pasamos adentro es lo que va tener adentro toda la lógica de la promesa y como la vamos a manejar en caso de que la promesa funcione o falle, por parámetro le pasamos dos parámetros que pueden llamarse de la forma que quieras, pero lo ideal es usar resolve para resolver cuando la promesa se cumplió, o sea el valor a devolver.  Reject es para devolver un error.

Un valor de retorno en una promesa no se pasa usando return, sino que se pasa por parámetro en la función resolve, que es lo que devuelve el valor al .then para que podamos hacer con esa respuesta lo que queramos.

Cada vez que obtengamos una respuesta como por ejemplo los usuarios, automáticamente caerán en el método .then, que es el que agarra el valor de retorno de una promesa, que si lo recordamos se lo entregamos con la función resolve(), para manejar los errores o las respuestas ante un error, agarramos el valor que retorna reject con el método .catch

EXCEPCIONES

Las excepciones en Javascript son imprevistos que ocurren durante la ejecución de un programa, problemas o anormalidades que impiden seguir con el flujo o el comportamiento normal de una aplicación o una página web.

En este lenguaje utilizamos Throw, tenemos que saber que esto detiene completamente la ejecución del hilo actual, por lo que el resto del código siguiente es ignorado para poder hacer foco en el error y/o excepción en la que nos encontramos.

Si nos vamos al código anterior podemos ver el ejemplo real:

```javascript
function mostrarUsuarios(){
    new Promise ( (resolve, reject) =>{
        setTimeout(() =>{
        throw "Error"
        console.log('Abajo aparecen los usuarios')
        reject('No se encontraron los usuarios')
        resolve(['Usuario2', 'Usuario2', 'Usuario3', 'Usuario4'])
       
           
        }, 1000)
    })
       
    .then((respuestaUsuarios) =>{
        console.log(respuestaUsuarios)
    })
```

Esto nos va a dar un error y nos nos va a permitir seguir con la ejecución normal del programa.

RAZONES

Las razones, valga la redundancia es simplemente dar una razón del por qué una promesa fue rechazada o no funcionó, puede parecer inútil pero la verdad es que cuando se trabaja en equipo es importante mantener estos estándares para poder trabajar mejor.

Cuando una promesa sea rechazada o no se complete por alguna razón, DA LA RAZÓN en el reject.