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();