jdPerez Logo Header
3 minutos de lectura | 24/07/2024

Entendiendo el 'Promise'

El promise de JS es una función que en sí es difícil de entender, pero que una vez se le coge el truco, es muy útil y utilizada en la programación con JS. Vamos a intentar explicar que es y vamos a ver un ejemplo de este mismo.

Según developer.mozilla sobre Promise obtenemos esta descripción:

El objeto Promise (Promesa) es usado para computaciones asíncronas. Una promesa representa un valor que puede estar disponible ahora, en el futuro, o nunca.

Esto nos dice que vamos obtener un valor, independiente a la carga de la página, en cualquier momento, este valor puede ser obtenido por una llamada realizada con éxito o no.

Por parte del promise necesitará 2 argumentos, resolver y rechazar. Cuando se ejecuta se les pasa los argumentos y el promise mandará una promesa resuelta si todo ha salido de forma correcta o si no este la rechazará.

Veamos mejor un ejemplo muy sencillo:

let getCurrentTime = new Promise((resolve, reject) => {
    setTimeout(() => {
        let didSucceed = Math.random() >= 0.5;
        didSucceed ? resolve(new Date()) : reject('Error');}, 2000);
})
 
getCurrentTime
    .then(currentTime => {
        console.log('The current time is: ' + currentTime);
    })
    .catch(err => console.log('There was an error:' + err))

Aquí vemos que tenemos una promesa, donde de forma aleatoria, llamará al resolve indicando que todo ha salido bien o al reject en caso contrario, esto podríamos hacer nuestra llamada a una API y aquí hacer lo correspondiente al resultado devuelto, un poco, como una llamada AJAX.

Después llamamos a la promesa donde si ha saltado el resolve al hacer el then nos devolverá el parámetro del objeto devuelto, en este caso sería un string, en caso contrario saltaría el catch.