JavaScript | promesas

Las promesas se utilizan para manejar operaciones asincrónicas en JavaScript. Son fáciles de administrar cuando se trata de múltiples operaciones asincrónicas donde las devoluciones de llamada pueden crear un infierno de devolución de llamada que conduce a un código inmanejable. 

Antes de las promesas, se usaban eventos y funciones de devolución de llamada, pero tenían funcionalidades limitadas y creaban un código inmanejable. 
Múltiples funciones de devolución de llamada crearían un infierno de devolución de llamada que conduce a un código inmanejable. Además, no es fácil para ningún usuario manejar varias devoluciones de llamada al mismo tiempo.
Los eventos no eran buenos para manejar operaciones asincrónicas.

Las promesas son la opción ideal para manejar operaciones asincrónicas de la manera más simple. Pueden manejar múltiples operaciones asincrónicas fácilmente y proporcionar un mejor manejo de errores que las devoluciones de llamada y los eventos. En otras palabras, también podemos decir que las promesas son la opción ideal para manejar múltiples devoluciones de llamada al mismo tiempo, evitando así la situación infernal de devolución de llamada no deseada. Las promesas brindan una mejor oportunidad para que un usuario lea el código de una manera más efectiva y eficiente, especialmente si ese código en particular se usa para implementar múltiples operaciones asincrónicas. 

  • Beneficios de las Promesas 
    1. Mejora la legibilidad del código
    2. Mejor manejo de operaciones asíncronas
    3. Mejor flujo de definición de control en lógica asíncrona
    4. Mejor manejo de errores
  • Una Promesa tiene cuatro estados: 
    1. cumplida : Acción relacionada con la promesa exitosa
    2. rechazado : la acción relacionada con la promesa falló
    3. pendiente : la promesa aún está pendiente, es decir, aún no se ha cumplido o se ha rechazado.
    4. liquidado : la promesa se ha cumplido o se ha rechazado
  • Se puede crear una promesa usando el constructor Promise.
    Sintaxis
var promise = new Promise(function(resolve, reject){
     //do something
});
  • Parámetros 
    • Promise constructor toma solo un argumento que es una función de devolución de llamada (y esa función de devolución de llamada también se conoce como función anónima también).
    • La función de devolución de llamada toma dos argumentos, resolver y rechazar
    • Realice operaciones dentro de la función de devolución de llamada y, si todo salió bien, llame a resolver.
    • Si las operaciones deseadas no salen bien, llame al rechazo.

Ejemplo

Javascript

var promise = new Promise(function(resolve, reject) {
  const x = "geeksforgeeks";
  const y = "geeksforgeeks"
  if(x === y) {
    resolve();
  } else {
    reject();
  }
});
   
promise.
    then(function () {
        console.log('Success, You are a GEEK');
    }).
    catch(function () {
        console.log('Some error has occurred');
    });

Producción:

Success, You are a GEEK

Consumidores de promesas
Las promesas se pueden consumir registrando funciones usando los métodos .then y .catch .

1. then()  
then() se invoca cuando una promesa se resuelve o se rechaza. También se puede definir como una carrera que toma datos de la promesa y los ejecuta con éxito.

Parámetros:  el método
then() toma dos funciones como parámetros. 

  1. La primera función se ejecuta si se resuelve la promesa y se recibe un resultado.
  2. La segunda función se ejecuta si se rechaza la promesa y se recibe un error. (Es opcional y hay una mejor manera de manejar el error usando el método .catch()

Sintaxis:

.then(function(result){
        //handle success
    }, function(error){
        //handle error
    })

Ejemplo: Promesa resuelta

Javascript

var promise = new Promise(function(resolve, reject) {
    resolve('Geeks For Geeks');
})
   
promise
    .then(function(successMessage) {
       //success handler function is invoked
        console.log(successMessage);
    }, function(errorMessage) {
        console.log(errorMessage);
    })

Producción:

Geeks For Geeks

Ejemplos: promesa rechazada

Javascript

var promise = new Promise(function(resolve, reject) {
    reject('Promise Rejected')
})
   
promise
    .then(function(successMessage) {
        console.log(successMessage);
    }, function(errorMessage) {
       //error handler function is invoked
        console.log(errorMessage);
    })

Producción:

Promise Rejected

2. atrapar() 

catch() se invoca cuando se rechaza una promesa o se produce algún error en la ejecución. Se utiliza como controlador de errores cada vez que en cualquier paso existe la posibilidad de obtener un error.

Parámetros:  el método
catch() toma una función como parámetro. 

  1. Función para manejar errores o rechazos de promesas. (El método .catch() llama internamente a .then(null, errorHandler), es decir, .catch() es solo una forma abreviada de .then(null, errorHandler) )

Sintaxis:

.catch(function(error){
        //handle error
    })

Ejemplos: promesa rechazada

Javascript

var promise = new Promise(function(resolve, reject) {
    reject('Promise Rejected')
})
   
promise
    .then(function(successMessage) {
        console.log(successMessage);
    })
    .catch(function(errorMessage) {
       //error handler function is invoked
        console.log(errorMessage);
    });

Producción:

Promise Rejected

Ejemplos: promesa rechazada

Javascript

var promise = new Promise(function(resolve, reject) {
    throw new Error('Some error has occurred')
})
   
promise
    .then(function(successMessage) {
        console.log(successMessage);
    })
    .catch(function(errorMessage) {
       //error handler function is invoked
        console.log(errorMessage);
    });

Producción:

Error: Some error has occurred

Aplicaciones 

  1. Las promesas se utilizan para el manejo asíncrono de eventos.
  2. Las promesas se utilizan para manejar requests http asíncronas.

Referencia : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

JavaScript es mejor conocido por el desarrollo de páginas web, pero también se usa en una variedad de entornos que no son de navegador. Puede aprender JavaScript desde cero siguiendo este tutorial de JavaScript y ejemplos de JavaScript .

Publicación traducida automáticamente

Artículo escrito por neerajnegi174 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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