Junior
La ce folosește Promise.all?
sobes.tech AI
Răspuns de la AI
Promise.all acceptă un obiect iterabil de promisiuni (de exemplu, un array) și returnează o nouă promisiune. Această nouă promisiune se îndeplinește atunci când toate promisiunile transmise sunt resolve cu succes. Rezultatul va fi un array de valori, corespunzătoare rezultatelor fiecărei promisiuni transmise, în aceeași ordine.
Dacă cel puțin unul dintre promisiuni este respins, atunci Promise.all este respins imediat cu motivul respingerii primei promisiuni respinse.
Aplicații:
- Executarea simultană a mai multor operații asincrone care nu depind unele de altele.
- Așteptarea finalizării unui set de operații înainte de a trece la pasul următor.
Exemplu:
async function fetchData() {
const urls = [
'https://api.example.com/data1',
'https://api.example.com/data2',
'https://api.example.com/data3',
];
try {
// Încărcarea datelor de pe mai multe URL-uri în același timp
const responses = await Promise.all(urls.map(url => fetch(url)));
// Verificarea succesului fiecărei răspunsuri
for (const response of responses) {
if (!response.ok) {
// Dacă un răspuns nu are succes, aruncă o eroare
throw new Error(`Eroare HTTP! status: ${response.status}`);
}
}
// Parsarea tuturor răspunsurilor în JSON
const jsonData = await Promise.all(responses.map(response => response.json()));
// Acum jsonData este un array cu rezultatele tuturor solicitărilor
console.log(jsonData);
} catch (error) {
// Gestionarea erorii dacă una dintre promisiuni a fost respinsă (Fetch sau JSON.parse)
console.error('Eroare la preluarea datelor:', error);
}
}
fetchData();