Junior
Ποιος είναι ο σκοπός του Promise.all;
sobes.tech AI
Απάντηση από AI
Το Promise.all δέχεται ένα επαναλαμβανόμενο αντικείμενο υποσχέσεων (π.χ. έναν πίνακα) και επιστρέφει μια νέα υπόσχεση. Αυτή η νέα υπόσχεση εκτελείται όταν όλες οι δοσμένες υποσχέσεις ολοκληρωθούν με επιτυχία. Το αποτέλεσμα θα είναι ένας πίνακας τιμών, που αντιστοιχούν στα αποτελέσματα κάθε μιας από τις δοσμένες υποσχέσεις, με την ίδια σειρά.
Εάν τουλάχιστον μία από τις δοσμένες υποσχέσεις απορριφθεί, τότε το Promise.all απορρίπτεται αμέσως με τον λόγο της απόρριψης της πρώτης απορριφθείσας υπόσχεσης.
Εφαρμογές:
- Ταυτόχρονη εκτέλεση πολλών ασύγχρονων λειτουργιών που δεν εξαρτώνται η μία από την άλλη.
- Αναμονή για την ολοκλήρωση ενός συνόλου λειτουργιών πριν προχωρήσετε στο επόμενο βήμα.
Παράδειγμα:
async function fetchData() {
const urls = [
'https://api.example.com/data1',
'https://api.example.com/data2',
'https://api.example.com/data3',
];
try {
// Φόρτωση δεδομένων από πολλαπλές URL ταυτόχρονα
const responses = await Promise.all(urls.map(url => fetch(url)));
// Έλεγχος επιτυχίας κάθε απάντησης
for (const response of responses) {
if (!response.ok) {
// Αν μια απάντηση δεν είναι επιτυχής, ρίχνουμε σφάλμα
throw new Error(`HTTP σφάλμα! κατάσταση: ${response.status}`);
}
}
// Ανάλυση όλων των απαντήσεων σε JSON
const jsonData = await Promise.all(responses.map(response => response.json()));
// Τώρα το jsonData είναι ένας πίνακας αποτελεσμάτων όλων των αιτημάτων
console.log(jsonData);
} catch (error) {
// Διαχείριση σφάλματος αν μια από τις υποσχέσεις απορριφθεί (Fetch ή JSON.parse)
console.error('Σφάλμα κατά την ανάκτηση δεδομένων:', error);
}
}
fetchData();