JavaScript да Промис ҳолатлари
Промис учта ҳолатнинг бирида бўлиши мумкин. Яратилганда промис кутishда бўлади (pending), сўнгра бажарилган (fulfilled) ҳолатга ўтиб, олинган натижани қайтариши, ёки рад қилинган (rejected) ҳолатга ўтиб, рад этилиш сабабини қайтариши мумкин. Сиз қуйидаги кодни ишга тушириб, бир ҳолатдан иккинчисига ўтишни кўришингиз мумкин:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false; // ёки true, ёки false қўйинг
if (!isError) {
resolve([1, 2, 3, 4, 5]);
} else {
reject('error in promise');
}
}, 3000);
});
setInterval(function() {
console.log(promise); // ҳар сонияда промисни консолга чиқарамиз
}, 1000);
Эътибор берингки, fulfilled ва rejected ҳолатлари ўзгармас: агар промис ушбу ҳолатларнинг бирига ўтган бўлса, унинг бошқа ҳолатга ўтиши мумкин эмас. Келибги мисолда кўрамиз. Қуйидаги кодда reject чақириги аввал рўй беради, шунинг учун resolve чақириги эътиборга олинмайди:
let promise = new Promise(function(resolve, reject) {
setTimeout(() => reject(new Error('error')), 1000);
setTimeout(() => resolve('ignored'), 2000);
});
Маълум вақт ўтиб муваффақиятли бажариладиган промис яратинг. Уни консолга чиқариб, бошланғич ва якуний ҳолатларини ўрганинг.
Маълум вақт ўтиб муваффақиятсиз бажариладиган промис яратинг. Уни консолга чиқариб, бошланғич ва якуний ҳолатларини ўрганинг.