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 iterable
conté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: status
e value
(ou reason
).
- Pode
status
serfulfilled
ourejected
. - O
value
caso if a promessa é cumprida oureason
) se a promessa é rejeitada.
O diagrama a seguir ilustra como o Promise.allSettled()
método funciona:
Neste diagrama:
- As
promise1
rejeições para oerror
att1
. - O
promise2
resolve para um valor emt2
. - O
Promise.allSettled()
método resolve uma matriz contendo objetos que descrevem os status e resultados depromise1
andpromise2
.
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
p
1 resolve o valor10
após um segundo - A segunda promessa
p2
é rejeitada por um motivo com valor20
após dois segundos. - O
Promise.allSettled()
retorna uma promessa que resolve para oresult
array que possui dois elementos. O primeiro elemento é um objeto resolvido pelap1
promessa e o segundo é outro objeto que é rejeitado pelap2
promessa.
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.