Hali za Kipekee katika Ahadi (Promises) kwenye JavaScript
Hebu sasa tujifunze kushughulikia hali za kipekee zilizotokea ndani ya ahadi (promise). Kwa kesi ya kutokea kwa hali kama hiyo tunapaswa kukataa ahadi kwa kutumia kitendo maalum cha kukataa, ambacho huingia moja kwa moja kwenye kigezo cha pili cha kitendo cha ahadi:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
...
}, 3000);
});
Ndani ya kitendo cha ahadi tunapaswa kuita
resolve, ikiwa kila kitu kimeenda kawaida, au
reject, ikiwa imetokea hali ya kipekee
:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false;
if (!isError) {
resolve([1, 2, 3, 4, 5]); // data ya ahadi
} else {
reject('error in promise'); // maandishi yako ya kosa
}
}, 3000);
});
Kisha katika njia then vigezo unapaswa
kupeleka si moja, bali vitendo viwili: ya kwanza itafanya kazi,
ikiwa ahadi imefanya kazi kawaida (iliresolve),
na ya pili - ikiwa imefanya kazi na kosa (ilireject):
promise.then(
function(result) {
console.log(result); // itaonyesha matokeo ya ahadi
},
function(error) {
console.log(error); // itaonyesha maandishi ya kosa
}
);
Kwa kawaida, msimbo ulioonyeshwa hapo juu huandikwa kwa muundo mfupi zaidi, kama hivi:
promise.then(function(result) {
console.log(result); // itaonyesha matokeo ya ahadi
}, function(error) {
console.log(error); // itaonyesha maandishi ya kosa
});
Tengeneza msimbo wa asynchronous ambao utazalisha
nambari nasibu kutoka 0 hadi 5.
Vifunge yote hii kwenye ahadi (promise). Na ahadi iwe na matokeo yake
kirajeshe matokeo ya kugawanya moja kwa nambari iliyozalishwa.
Na ahadi ifanikiwe na kosa,
ikiwa imetokea mgawanyo kwa sifuri, na na mafanikio
katika kesi zote nyingine.