Cum sa folosesti Promise-uri in JavaScript
In this tutorial, you'll learn about Cum sa folosesti Promise. We cover key concepts, practical examples, and best practices.
Promise-urile reprezinta valoarea unei operatii asincrone care poate fi rezolvata sau respinsa in viitor. Acest ghid iti arata cum sa folosesti corect then, catch, finally si Promise.all.
Quick Fix
1. Crearea unui Promise
Un Promise primeste o functie executor cu resolve si reject:
const fetchData = new Promise((resolve, reject) => {
const success = true;
setTimeout(() => {
if (success) resolve('Date incarcate');
else reject('Eroare la incarcare');
}, 1000);
});
2. Consumarea cu then si catch
then() primeste rezultatul, catch() prinde eroarea:
fetchData
.then(data => console.log(data))
.catch(error => console.error(error));
Date incarcate
3. Chaining promises
Poti lantui mai multe then()-uri:
const getUser = id => Promise.resolve({ id, name: 'Ion' });
const getPosts = user => Promise.resolve([{ title: 'Post 1' }]);
getUser(1)
.then(user => getPosts(user))
.then(posts => console.log(posts))
.catch(err => console.error(err));
[{ title: 'Post 1' }]
4. Promise.all pentru executie paralela
Promise.all() ruleaza mai multe promise-uri in paralel:
const promise1 = Promise.resolve(10);
const promise2 = new Promise(r => setTimeout(() => r(20), 100));
const promise3 = fetch('https://api.example.com/data')
.then(res => res.json())
.catch(() => ({ mock: true }));
Promise.all([promise1, promise2, promise3])
.then(([result1, result2, result3]) => {
console.log('Toate promise-urile s-au rezolvat:', result1, result2, result3);
});
Toate promise-urile s-au rezolvat: 10 20 { mock: true }
5. finally pentru cleanup
finally() se executa indiferent de rezultat:
function loadData() {
showLoader();
return fetchData()
.then(data => displayData(data))
.catch(err => showError(err))
.finally(() => hideLoader());
}
Prevention
- Returneaza intotdeauna promise-uri in lant pentru a pastra fluxul
- Adauga
.catch()la finalul fiecarui lant de promise-uri - Foloseste
Promise.all()pentru operatii independente paralele - Foloseste
finally()pentru cleanup (ascunde loader, inchide conexiuni)
Common Mistakes
- A nu returna promise-ul in lant -- fara
return, urmatorulthen()primesteundefined - A uita catch-ul -- promise-urile nerejectate cauzeaza erori silentioase sau unhandled rejections
- A crea promise-uri anidate in loc de lant -- duce la "callback hell" cu promise-uri
- A confunda Promise.all cu Promise.allSettled --
allrespinge la prima eroare,allSettledasteapta toate - A nu sti ca Promise.all respinge imediat -- daca un promise respinge, intregul grup respinge
FAQ
Construit de dezvoltatorii Doda Browser, DodaZIP si Durga Antivirus Pro. Instrumentele DodaTech se integreaza perfect cu JavaScript pentru productivitate si securitate sporite.
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro