Sobes.tech
Junior — Middle

Qual é a diferença entre as funções Promise.all e Promise.any ao lidar com promessas?

sobes.tech IA

Resposta da IA

Promise.all aceita um array de promessas e retorna uma nova promessa que:

  • resolve quando todas as promessas do array são concluídas com sucesso, retornando um array de resultados na mesma ordem;
  • rejeita se pelo menos uma das promessas for rejeitada, imediatamente com o erro dessa promessa.

Promise.any aceita um array de promessas e retorna uma promessa que:

  • resolve assim que qualquer uma das promessas for concluída com sucesso, retornando o resultado dessa promessa;
  • rejeita se todas as promessas forem rejeitadas, retornando um AggregateError com os erros de todas as promessas.

Exemplo:

const p1 = Promise.reject('Erro 1');
const p2 = Promise.resolve('Sucesso 2');
const p3 = Promise.resolve('Sucesso 3');

Promise.all([p1, p2, p3])
  .then(console.log) // não será chamado
  .catch(console.error); // exibirá 'Erro 1'

Promise.any([p1, p2, p3])
  .then(console.log) // exibirá 'Sucesso 2'
  .catch(console.error);