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:

javascriptlet 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:

javascriptlet promise = new Promise(function(resolve, reject) {
  setTimeout(() => reject(new Error('error')), 1000);
  setTimeout(() => resolve('ignored'), 2000);
});
Задание 1

Tengeneza ahadi (promise) ambayo itatimizwa kwa mafanikio baada ya muda fulani. Itoe kwenye konsole na uchunguze hali yake ya awali na ile iliyokamilika.

Задание 2

Tengeneza ahadi (promise) ambayo itatimizwa kwa kutofaulu baada ya muda fulani. Itoe kwenye konsole na uchunguze hali yake ya awali na ile iliyokamilika.