Promise en JavaScript: ¿qué es?

promise en javascript

Promise en JavaScript: ¿Qué es?

Una Promise en JavaScript es un objeto que representa la eventual finalización (o falla) de una operación asíncrona y su valor resultante.

Promise en JavaScriot proporciona una forma de registrar devoluciones de llamada para cuando una operación asíncrona se completa o falla, en lugar de tener que usar funciones de devolución de llamada.


Las Promise generalmente se usan con operaciones asincrónicas, como solicitudes de red, lectura de archivos o interacción con las API de los navegadores web. Proporcionan una forma de manejar los resultados de estas operaciones sin bloquear la ejecución del resto del programa.

Una Promise en Javascript está en uno de tres estados:

  1. Fulfilled
  2. Rejected
  3. Pendiing

Se dice que una promesa se cumple si la operación asincrónica se completa con éxito y se rechaza si la operación asincrónica falla. Si la promesa no se cumple ni se rechaza, entonces la promesa quedará en estado pendiente.

Entonces, cómo crear y usar Promise, que es muy importante como desarrollador, así que comencemos

Una promesa se crea usando el constructor Promise , que toma un solo argumento: una función llamada función “ejecutor” o función de devolución de llamada. La función ejecutora (función de devolución de llamada) toma dos argumentos: una función de resolución y una función de rechazo.

Se debe llamar a la función de resolución cuando la operación asincrónica se complete correctamente.

    • La función de rechazo debe llamarse cuando falla la operación asincrónica.

Una vez que se crea una promesa, el desarrollador puede usar el método .then() para adjuntar una devolución de llamada exitosa, que se invocará cuando se cumpla la promesa.

Cuando se produce un error, puede adjuntar una función de devolución de llamada fallida utilizando el método .catch(), que se invocará cuando se rechace la promesa.

Ahora entendamos esto con un ejemplo simple…

// Create a promise that will resolve after 2 seconds
const myPromise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Hello World!');
}, 2000);
});

// Attach a success callback to the promise
myPromise.then(result => {
console.log(result); // Output: 'Hello World!'
});
  • En este ejemplo, creamos una promesa utilizando el constructor Promise.
    • Dentro del constructor, establecemos un tiempo de espera que resolverá la promesa con la cadena “¡Hola mundo!” después de 2 segundos.
    • Luego adjuntamos una devolución de llamada exitosa a la promesa usando el método .then(), que registrará el resultado de la promesa en la consola.

También puedes adjuntar una devolución de llamada fallida usando el método .catch():

onst myPromise = new Promise((resolve, reject) => {
setTimeout(() => {
reject(new Error('Something went wrong'));
}, 2000);
});

myPromise.catch(error => {
console.log(error); // Output: 'Error: Something went wrong'
});

En este ejemplo, la promesa se rechaza con un mensaje de error y el método .catch() adjunto detectará el error y lo imprimirá en la consola.

También puede encadenar varias Promise en JavaScript para manejar los resultados de varias operaciones asincrónicas en un orden específico:

const myPromise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Hello World!');
}, 2000);
});

myPromise
.then(result => {
return result + ' How are you?';
})
.then(result => {
console.log(result); // Output: 'Hello World! How are you?'
})
.catch(error => {
console.log(error);
});

Este ejemplo demuestra el encadenamiento de promesas.

  • El primer método .then() toma el resultado de la promesa y le agrega una cadena.
  • El segundo método .then() registra el resultado final en la consola.

Las Promise en JavaScript son una herramienta poderosa para manejar operaciones asincrónicas y pueden hacer que su código sea más legible y manejable.

Si has llegado hasta aquí aplaude, hay más…

Promise.all()Promise.race() son dos funciones de utilidad adicionales que ayudan a manejar múltiples promesas de una manera más eficiente.

Promise.all() toma una matriz de promesas y devuelve una nueva promesa que se cumple con una matriz de valores cumplidos en el mismo orden que las promesas originales.

Promise.race() toma una serie de promesas y devuelve una nueva promesa que se cumple o rechaza con la primera promesa cumplida o rechazada.

Pero esto está ahora fuera de nuestro alcance. Discutiremos esto en otros artículos en detalle.

En resumen, JavaScript Promises brinda una forma de manejar los resultados de las operaciones asincrónicas de una manera limpia y organizada, utilizando una API familiar e intuitiva. Es una herramienta poderosa que le permite manejar flujos asíncronos complejos con facilidad.

Terminando…

Bueno, eso es realmente todo en este artículo, espero que hayan sacado algo de esto y… los veré en el próximo.

¡Eres increíble!


Gracias por llegar hasta aquí, si encuentras esto útil no olvides dejar un👍🏼y suscribirse para recibir más contenido.

Si le interesa, puede echar un vistazo a algunos de los otros artículos que he escrito recientemente sobre Node.js y AWS Lambda:

Recent Post