JavaScript-da Promise holatlari
Promise uchta holatdan birida bo'lishi mumkin. Yaratilgan paytda Promise kutish holatida bo'ladi (pending), so'ngra bajarilgan (fulfilled) holatiga o'tib, natijani qaytarishi, yoki rad etilgan (rejected) holatiga o'tib, rad etish sababini qaytarishi mumkin. Quyidagi kodni ishgatish orqali bir holatdan ikkinchisiga o'tishni ko'rishingiz mumkin:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false; // yoki true, yoki false qo'ying
if (!isError) {
resolve([1, 2, 3, 4, 5]);
} else {
reject('error in promise');
}
}, 3000);
});
setInterval(function() {
console.log(promise); // har soniyada promiseni konsolga chiqaramiz
}, 1000);
E'tibor bering, fulfilled va rejected holatlari o'zgarmas: agar promise ushbu holatlardan biriga o'tsa, u boshqasiga o'ta olmaydi. Keling, buni misolda ko'ramiz. Quyidagi kodda reject chaqiruvi oldinroq sodir bo'ladi, shuning uchun resolve chaqiruvi e'tiborga olinmaydi:
let promise = new Promise(function(resolve, reject) {
setTimeout(() => reject(new Error('error')), 1000);
setTimeout(() => resolve('ignored'), 2000);
});
Ma'lum vaqtdan so'ng muvaffaqiyatli bajariladigan promise yarating. Uni konsolga chiqaring va uning boshlang'ich hamda tugallangan holatlarini o'rganing.
Ma'lum vaqtdan so'ng muvaffaqiyatsiz bajariladigan promise yarating. Uni konsolga chiqaring va uning boshlang'ich hamda tugallangan holatlarini o'rganing.