JavaScript-da Promise-lardagi Istisnolar
Keling, endi promise ichida yuz bergan istisno holatlarini qanday boshqarishni o'rganaylik. Bunday holat yuz berganda, biz promise-ni maxsus rad etish funktsiyasi yordamida rad etishimiz kerak, bu funktsiya avtomatik ravishda promise funktsiyasining ikkinchi parametriga kiradi:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
...
}, 3000);
});
Promise funktsiyasi ichida biz hamma narsa normal
o'tganda resolve ni, yoki istisno holati
yuz berganda reject ni chaqirishimiz kerak:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false;
if (!isError) {
resolve([1, 2, 3, 4, 5]); // promise ma'lumotlari
} else {
reject('promise-dagi xatolik'); // xatolik matni
}
}, 3000);
});
Keyin then metodida parametrlar sifatida siz
bitta emas, balki ikkita funktsiyani o'tkazishingiz kerak:
birinchi funktsiya promise muvaffaqiyatli bajarilganda
(resolve bo'lganda) ishlaydi,
ikkinchisi esa xatolik bilan bajarilganda (reject bo'lganda) ishlaydi:
promise.then(
function(result) {
console.log(result); // promise natijasini chiqaradi
},
function(error) {
console.log(error); // xatolik matnini chiqaradi
}
);
Qoida tariqasida, yuqoridagi kod odatda ancha ixcham tarzda quyidagicha yoziladi:
promise.then(function(result) {
console.log(result); // promise natijasini chiqaradi
}, function(error) {
console.log(error); // xatolik matnini chiqaradi
});
0 dan 5 gacha tasodifiy sonlar generatsiya qiladigan
asinxron kod yarating.
Hammasini promise ichiga o'rashing. Promise natija sifatida
birni generatsiya qilingan songa bo'lish natijasini qaytarsin.
Agar nolga bo'lish sodir bo'lsa, promise xatolik bilan,
aks holda muvaffaqiyatli bajarilsin.