Saltar al contenido

¿Cómo acceder al valor de una promesa?

Solución:

promiseA‘s then la función devuelve una nueva promesa (promiseB) que se resuelve inmediatamente después promiseA se resuelve, su valor es el valor de lo que se devuelve de la función de éxito dentro de promiseA.

En este caso promiseA se resuelve con un valor – result y luego resuelve inmediatamente promiseB con el valor de result + 1.

Accediendo al valor de promiseB se hace de la misma manera que accedimos al resultado de promiseA.

promiseB.then(function(result) {
    // here you can use the result of promiseB
});

Editar diciembre de 2019: async/await ahora es estándar en JS, lo que permite una sintaxis alternativa al enfoque descrito anteriormente. Ahora puedes escribir:

let result = await functionThatReturnsPromiseA();
result = result + 1;

Ahora no hay promesaB, porque hemos desenvuelto el resultado de la promesaA usando awaity puede trabajar con él directamente.

Sin embargo, await solo se puede usar dentro de un async función. Entonces, para alejar un poco, lo anterior debería estar contenido así:

async function doSomething() {
    let result = await functionThatReturnsPromiseA();
    return result + 1;
}

Cuando una promesa se resuelve / rechaza, llamará a su controlador de éxito / error:

var promiseB = promiseA.then(function(result) {
   // do something with result
});

los then El método también devuelve una promesa: promiseB, que será resuelta / rechazada dependiendo del valor de retorno del controlador de éxito / error de promiseA.

Hay tres valores posibles que los manejadores de éxito / error de promiseA pueden devolver que afectarán el resultado de promiseB:

1. Return nothing --> PromiseB is resolved immediately, 
   and undefined is passed to the success handler of promiseB
2. Return a value --> PromiseB is resolved immediately,
   and the value is passed to the success handler of promiseB
3. Return a promise --> When resolved, promiseB will be resolved. 
   When rejected, promiseB will be rejected. The value passed to
   the promiseB's then handler will be the result of the promise

Armado con este entendimiento, puede entender lo siguiente:

promiseB = promiseA.then(function(result) {
  return result + 1;
});

La llamada a continuación devuelve promesaB inmediatamente. Cuando se resuelva la promesaA, pasará el resultado al controlador de éxito de la promesaA. Dado que el valor de retorno es el resultado de la promesaA + 1, el controlador de éxito está devolviendo un valor (opción 2 anterior), por lo que promesaB se resolverá de inmediato y el controlador de éxito de la promesaB pasará al resultado de la promesa A + 1.

.then función de la promesa B recibe lo que se devuelve .then función de la promesa A.

aquí la promesa A está regresando es un número, que estará disponible como number parámetro en función de éxito de la promesa B. que luego se incrementará en 1

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

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