Hali za Ahadi (Promise) katika JavaScript
Ahadi (promise) inaweza kuwa katika moja ya hali tatu. Wakati wa kuundwa, ahadi iko kwenye kusubiri (pending), kisha inaweza kutimizwa (fulfilled), ikirudisha matokeo yaliyopatikana, au kukataliwa (rejected), ikirudisha sababu ya kukataa. Unaweza kuona mpito kutoka kwa hali moja hadi nyingine kwa kukimbia mfumo ufuatao wa kanuni:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false; // weka ama true, ama false
if (!isError) {
resolve([1, 2, 3, 4, 5]);
} else {
reject('error in promise');
}
}, 3000);
});
setInterval(function() {
console.log(promise); // kila sekunda tunatoa ahadi kwenye konsole
}, 1000);
Zingatia kwamba hali za fulfilled na rejected hazibadilika: ikiwa ahadi imehamia kwenye moja ya hali hizi, haitaweza tena kuhama hadi nyingine. Hebu tuangalie kwa mfano. Katika mfumo ufuatao wa kanuni, kiitiko reject kitatokea kwanza, kwa hivyo kiitiko resolve kitakuwa hakitumiki:
let promise = new Promise(function(resolve, reject) {
setTimeout(() => reject(new Error('error')), 1000);
setTimeout(() => resolve('ignored'), 2000);
});
Tengeneza ahadi (promise) ambayo itatimizwa kwa mafanikio baada ya muda fulani. Itoe kwenye konsole na uchunguze hali yake ya awali na ile iliyokamilika.
Tengeneza ahadi (promise) ambayo itatimizwa kwa kutofaulu baada ya muda fulani. Itoe kwenye konsole na uchunguze hali yake ya awali na ile iliyokamilika.