Junior — Middle
Jaký je rozdíl mezi funkcemi Promise.all a Promise.any při zpracování slibů?
sobes.tech AI
Odpověď od AI
Promise.all přijímá pole slibů a vrací nový slib, který:
- se vyřeší, když všechny sliby v poli úspěšně dokončí, vracející pole výsledků ve stejném pořadí;
- je zamítnut, pokud je alespoň jedno z nich zamítnuto, okamžitě s chybou tohoto slibu.
Promise.any přijímá pole slibů a vrací slib, který:
- se vyřeší, jakmile kterýkoli z nich úspěšně dokončí, vracející výsledek tohoto slibu;
- je zamítnut, pokud jsou všechny zamítnuty, vracející AggregateError s chybami všech slibů.
Příklad:
const p1 = Promise.reject('Chyba 1');
const p2 = Promise.resolve('Úspěch 2');
const p3 = Promise.resolve('Úspěch 3');
Promise.all([p1, p2, p3])
.then(console.log) // nebude voláno
.catch(console.error); // vypíše 'Chyba 1'
Promise.any([p1, p2, p3])
.then(console.log) // vypíše 'Úspěch 2'
.catch(console.error);