Bu gün JavaScript-də Promise haqqında sizlərə kiçik də olsa informasiya verməyə çalışacam.
Promise – söz, vəd vermək deməkdir. Bəs proqramlaşdırmada?
Bizə hər hansı bir qiymət verməyi nəzərdə tutan bir obyektdir. Bu qiymət müsbət mənada da ola bilər, mənfi mənada da.
Yəni ilk olaraq bizə söz verildikdə bu gözləmə (pending) rejimində olur. Sonra isə bizə ya uğurlu (resolved) ya da uğursuz (rejected) olması haqqında bir qiymət qaytarır. Əgər uğurludursa ƏLA həyata davam et) Yox uğursuz nəticə almış olduğumuz halda isə, bir az məyus olaraq bu vəziyyəti idarə edə bilərik(error handling).
Promise kiçik kod nümunəsi verə bilərik:
const soz = new Promise(function(resolve, reject){
if (ela) {
resolve('Əməliyyat tamamlandı!');
} else {
reject('Upss...');
}
})
soz.then(function(cavab){
console.log(cavab)
}).catch(function(xeta){
console.log(xeta)
})
- Promise new açar sözü ilə istifadə edirik.
- Uğurlu (resolve), uğursuz (reject) funksiyaları ilə birlikdə istifadə edirik. Sıralamanı pozmadan adlarını fərqli yaza bilərsiniz.
- Promise gözlənilən əməliyyatı həyatə keçirdikdən sonra nöbəti əməliyyatlar üçün then() metodunun daxilinə keçir. Göndərilən parametr isə resolve() ile gönderilir.
- Hər hansı bir problem baş verdiyi halda catch() daxilinə keçir.
Promise metodlar:
- Promise.resolve() :
Verilən qiymət üzərində əməliyyat apararaq yeni bir Promise obyekti qaytarır.
- Promise.reject() :
Verilən qiymət xəta mesajı olaraq uğursuz olan bir Promise obyekti qaytarır.
- Promise.all() :
Metodun məqsədi, paralel olaraq asinxron əməliyyatların hamısının bitib-bitmədiyini öyrənmək üçün istifadə edə bilərik. Bir-birlərini gözləməyən asinxron əməliyyatları zəncirvari etsək ümumi gözləmə müddətini uzatmış oluruq.
Gözləyən bütün əməliyyatların bitməsindən əmin olmaq, həm də bunu Promise istifadə edərək etmək Promise.all() metodu ilə mümkündür. Massivdəki bütün Promise-lar uğurlu olduğunda saxladıqları dəyərlərdə massiv halında bizə qaytarılır. Əgər massivdəki hər hansı bir Promise uğursuz olsa Promise.all() bizə uğursuz nəticə qaytaracaqdır.
- Promise.race():
Massiv daxilindəki Promise-ları yarışdırmaq üçün istifadə edirik. Yəni verilən Promise-a ilk çatan yarışın qalibi olur. Və uğurlu və ya uğursuz nəticə bu yarışa mane ola bilmir.