Sobes.tech
Junior

Para que serve o Promise.all?

sobes.tech IA

Resposta da IA

Promise.all aceita um objeto iterável de promessas (por exemplo, um array) e retorna uma nova promessa. Esta nova promessa é resolvida quando todas as promessas passadas são resolvidas com sucesso. O resultado será um array de valores, correspondentes aos resultados de cada uma das promessas passadas, na mesma ordem.

Se pelo menos uma das promessas passadas for rejeitada, então Promise.all é rejeitada imediatamente com a razão da rejeição da primeira promessa rejeitada.

Aplicações:

  • Execução simultânea de várias operações assíncronas que não dependem umas das outras.
  • Aguardar a conclusão de um conjunto de operações antes de passar para o próximo passo.

Exemplo:

async function fetchData() {
  const urls = [
    'https://api.example.com/data1',
    'https://api.example.com/data2',
    'https://api.example.com/data3',
  ];

  try {
    // Carregar dados de várias URLs ao mesmo tempo
    const responses = await Promise.all(urls.map(url => fetch(url)));

    // Verificar o sucesso de cada resposta
    for (const response of responses) {
      if (!response.ok) {
        // Se uma das respostas não for bem-sucedida, lançar um erro
        throw new Error(`HTTP error! status: ${response.status}`);
      }
    }

    // Analisar todas as respostas em JSON
    const jsonData = await Promise.all(responses.map(response => response.json()));

    // Agora jsonData é um array de resultados de todas as requisições
    console.log(jsonData);

  } catch (error) {
    // Lidar com erro se uma das promessas foi rejeitada (Fetch ou JSON.parse)
    console.error('Error fetching data:', error);
  }
}

fetchData();