Junior
Šta je Promise.race?
sobes.tech АИ
Одговор од АИ
Promise.race — metoda koja vraća novi obećanje. Ovo novo obećanje se rešava ili odbacuje sa istom vrednošću (ili razlogom) kao i prvo obećanje iz prosleđenog iterabilnog objekta (obično niz) koji je završen.
Principi rada:
- Ulaz: Prihvata iterabilni objekat (npr. niz) obećanja.
- Očekivanje: Počinje "takmičenje" između svih obećanja.
- Rezultat: Čim bilo koje od obećanja u iterabilnom objektu bude završeno (bilo da je rešeno ili odbačeno),
Promise.racese odmah završava istim rezultatom. - Ignorisanje: Rezultati svih ostalih obećanja koja se završe kasnije, potpuno se ignorišu.
Primer upotrebe:
// Primer obećanja koje se rešava nakon 1 sekunde
const promise1 = new Promise((resolve) => setTimeout(() => resolve('Prvi'), 1000));
// Primer obećanja koje se rešava nakon 500 milisekundi
const promise2 = new Promise((resolve) => setTimeout(() => resolve('Drugi'), 500));
// Primer obećanja koje se odbacuje nakon 300 milisekundi
const promise3 = new Promise((_, reject) => setTimeout(() => reject(new Error('Greška')), 300));
Promise.race([promise1, promise2, promise3])
.then((value) => {
console.log(value); // Ispisaće 'Greška'
})
.catch((error) => {
console.error(error.message); // Obrada greške 'Greška'
});
U ovom primeru, promise3 se završava prvi (odbijen), pa će Promise.race biti završeno greškom, i biće izvršen blok .catch. Da je promise2 završio prvi (npr. za 10 ms), Promise.race bi se rešio sa vrednošću 'Drugi', i izvršio bi se blok .then.
Tipični scenariji upotrebe:
- Implementacija timeout-a za asinhronu operaciju.
- Dobijanje rezultata od najbržeg izvora podataka među više mogućnosti.
- Otkazivanje konkurentnih asinhronih operacija.