Junior
Waarvoor is Promise.all?
sobes.tech AI
Antwoord van AI
Promise.all accepteert een iterabel object van beloftes (bijvoorbeeld een array) en retourneert een nieuwe belofte. Deze nieuwe belofte wordt vervuld wanneer alle meegegeven beloftes succesvol worden vervuld. Het resultaat is een array van waarden, overeenkomend met de resultaten van elke meegegeven belofte, in dezelfde volgorde.
Als minstens één van de meegegeven beloftes wordt afgewezen, wordt Promise.all onmiddellijk afgewezen met de reden van de eerste afgewezen belofte.
Toepassingen:
- Gelijktijdig uitvoeren van meerdere asynchrone operaties die niet van elkaar afhankelijk zijn.
- Wachten tot een set operaties is voltooid voordat je doorgaat naar de volgende stap.
Voorbeeld:
async function fetchData() {
const urls = [
'https://api.example.com/data1',
'https://api.example.com/data2',
'https://api.example.com/data3',
];
try {
// Data gelijktijdig laden van meerdere URL's
const responses = await Promise.all(urls.map(url => fetch(url)));
// Controleren of elke reactie succesvol is
for (const response of responses) {
if (!response.ok) {
// Als een reactie niet succesvol is, gooi een fout
throw new Error(`HTTP-fout! status: ${response.status}`);
}
}
// Alle reacties parseren naar JSON
const jsonData = await Promise.all(responses.map(response => response.json()));
// jsonData is nu een array van resultaten van alle verzoeken
console.log(jsonData);
} catch (error) {
// Fout afhandelen als een van de beloftes is afgewezen (Fetch of JSON.parse)
console.error('Fout bij ophalen data:', error);
}
}
fetchData();