Las promesas son una de las tantas formas en que podemos manejar las operaciones asincrónicas en JavaScript evitando los callback hell, es una forma ordenada de lanzar funciones y continuar con la ejecución sin necesidad de bloquear el hilo de ejecución, muchas personas tienen alguna dificultad en comprender cómo funcionan las promesas, sin embargo una promesa es un objeto que retorna un éxito o un fracaso.

Un ejemplo de la vida real es cuando una persona va a un restaurant de comida rápida o de comida para llevar, ordena su comida, paga de antemano, le entregan el ticket sin embargo tiene que esperar a que le preparen la comida para poderesa llevar, el cliente tiene la promesa de que el restaurant le entregara su comida, entonces finalmente pueden pasar dos cosas, en la mayoría de los casos el restaurant entregará la comida que desde el punto de vista de JS quiere decir que resolverá la promesa, sin embargo pueden darse situaciones como que el restaurant se quedó sin ingredientes o se le incendió la cocina y la promesa que hizo incialmente no se cumplira, es decir sera rechazada tambien hablando desde el punto de vista de JS.

Lo primero es definir una función que retorna un objeto promesa que dentro realizará una tarea, esta en caso de resolver con éxito su tarea mediante resolve si tuvo éxito o rechazara la promesa con reject si falló miserablemente.

Existe un tercer estado aparte de resolve y reject que es pending que es como su nombre lo indica es cuando está esperando a ser ejecutada, todas las promesas arrancan en ese estado hasta adquirir alguno de los otros dos.

Al ejecutar la promesa podemos capturar el éxito con response o el error err y actuar en consecuencia, en el ejemplo simplemente muestra un mensaje en la consola sin embargo las posibilidades  y los usos son infinitos.

const promiseTest = () => {
    return new Promise((resolve,reject) => {
        if (true) {
            resolve('It's working fine');
        } else {
            reject('Oh crap!!!');
        }

    });
};

promiseTest()
.then(response => console.log(response))
.catch(err=> console.error(err));

Como podemos ver no es nada complicado

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *