JavaScript'теги Promise'дин уч абалы
Promise үч абалдын биринде болушу мүмкүн. Түзүлгөндө Promise күтүүдө болот (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); // ар секунд сайын promise'ти консолго чыгарабыз
}, 1000);
fulfilled жана rejected абалдары өзгөрбөстүгүн эске алыңыз: эгерде promise ушул абалдардын бирине өтсө, анда ал эч качан башкасына өтө албайт. Мисал келтирип көрөлү. Төмөндөгү коддо reject чакырылышы эрте болот, ошондуктан resolve чакырылышы эске алынбай калат:
let promise = new Promise(function(resolve, reject) {
setTimeout(() => reject(new Error('ката')), 1000);
setTimeout(() => resolve('эске алынбады'), 2000);
});
Белгилүү бир убакыттан кийин ийгиликтүү аткарыла турган promise түзгүлө. Аны консолго чыгарып, анын баштапкы абалын жана аяктаган абалын изилдегиле.
Белгилүү бир убакыттан кийин ийгиликсиз аткарыла турган promise түзгүлө. Аны консолго чыгарып, анын баштапкы абалын жана аяктаган абалын изилдегиле.