JavaScript-тегі промис күйлері
Промис үш күйдің бірінде болуы мүмкін. Құрылған кезде промис күтуде болады (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('promise-тағы қате');
}
}, 3000);
});
setInterval(function() {
console.log(promise); // әрбір секундта промисты консольге шығарамыз
}, 1000);
fulfilled және rejected күйлері өзгермейтіндігін ескеріңіз: егер промис осы күйлердің біріне өтсе, ол енді екіншісіне өте алмайды. Мысалмен қарастырайық. Келесі кодта reject шақыруы бұрын орын алады, сондықтан resolve шақыруы елемейді:
let promise = new Promise(function(resolve, reject) {
setTimeout(() => reject(new Error('қате')), 1000);
setTimeout(() => resolve('елемеу'), 2000);
});
Белгілі бір уақыттан кейін сәтті орындалатын промис жасаңыз. Оны консольге шығарып, бастапқы күйін және аяқталған күйін зерттеңіз.
Белгілі бір уақыттан кейін сәтсіз аяқталатын промис жасаңыз. Оны консольге шығарып, бастапқы күйін және аяқталған күйін зерттеңіз.