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