JavaScript Promise.allSettled()

Resumo : neste tutorial você aprenderá o Promise.allSettled()método para redigir promessas.

Introdução ao Promise.allSettled()método

ES2020 introduziu o Promise.allSettled()método que aceita uma lista de promessas e retorna uma nova promessa que é resolvida depois que todas as promessas de entrada forem resolvidas, resolvidas ou rejeitadas.

O seguinte mostra a sintaxe do Promise.allSettled()método:

Promise.allSettled(iterable);Linguagem de código:  JavaScript  ( javascript )

O iterablecontém as promessas. O Promise.allSettled()retorna uma promessa pendente que será cumprida de forma assíncrona assim que cada promessa de entrada for liquidada.

O Promise.allSettled()método retorna uma promessa que resolve uma matriz de objetos , cada um descrevendo o resultado da promessa de entrada.

Cada objeto possui duas propriedades: statuse value(ou reason).

  • Pode statusser fulfilledou rejected.
  • O valuecaso if a promessa é cumprida ou reason) se a promessa é rejeitada.

O diagrama a seguir ilustra como o Promise.allSettled()método funciona:

JavaScript Promise.allSettled

Neste diagrama:

  • As promise1rejeições para o errorat t1.
  • O promise2resolve para um valor em t2.
  • O Promise.allSettled()método resolve uma matriz contendo objetos que descrevem os status e resultados de promise1and promise2.

Exemplo de JavaScript Promise.allSettled()

O exemplo a seguir usa o Promise.allSettled()para aguardar que todas as promessas de entrada sejam liquidadas:

const p1 = new Promise((resolve, reject) => {
    setTimeout(() => {
        console.log('The first promise has resolved');
        resolve(10);
    }, 1 * 1000);

});

const p2 = new Promise((resolve, reject) => {
    setTimeout(() => {
        console.log('The second promise has rejected');
        reject(20);
    }, 2 * 1000);
});

Promise.allSettled([p1, p2])
    .then((result) => {
        console.log(result);
    });
Linguagem de código:  JavaScript  ( javascript )

Saída:

Como funciona:

  • A primeira promessa p1 resolve o valor 10após um segundo
  • A segunda promessa p2é rejeitada por um motivo com valor 20após dois segundos.
  • O Promise.allSettled()retorna uma promessa que resolve para o resultarray que possui dois elementos. O primeiro elemento é um objeto resolvido pela p1promessa e o segundo é outro objeto que é rejeitado pela p2promessa.

Resumo

  • O Promise.allSettled()método aceita um iterável de promessas e retorna uma nova promessa que é resolvida quando cada promessa de entrada é resolvida com uma matriz de objetos que descreve o resultado de cada promessa no objeto iterável.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *