⊗jsSpPrmFC 171 of 294 menu

Kuunda Ahadi Zilizokwisha Kutimia kwenye JavaScript

Wakati mwingine huenda ukahitaji kuunda ahadi iliyokwisha kutimia. Kwa hili kuna njia mbili: Njia Promise.resolve huunda ahadi iliyofanikiwa, Promise.reject huunda ahadi iliyokataliwa. Kama parameta, hizi nia hupokea kile kitakachokuwa matokeo au hitilafu ya ahadi mtawalia.

Tunawezaje kuhitaji ahadi iliyokwisha kutimia? Hebu tuangalie kwa mfano. Hebu tuseme tuna baadhi ya kazi, ambayo inapokea nambari kama parameta, inafanya kitu nayo kwa njia isiyo ya synchronic na kurudisha ahadi na matokeo:

function func(num) { return new Promise(function(resolve) { setTimeout(function() { resolve(num * num); }, 3000); }); }

Tutatumia kazi yetu kama ifuatavyo:

func(5).then(function(res) { console.log(res); // itatoa 25 });

Hebu tuseme sasa tumekubiana, kwamba operesheni yetu isiyo ya synchronic tutafanya tu ikiwa nambari iliyopitishwa ni kubwa kuliko sifuri. Vinginevyo matokeo ya kazi yanapaswa kuwa sifuri:

function func(num) { if (num > 0) { return new Promise(function(resolve) { setTimeout(function() { resolve(num * num); }, 3000); }); } else { return 0; // matokeo ya sifuri } }

Hata hivyo, sasa inabadilika kuwa kazi inarudisha ama ahadi, ama nambari. Kwa sababu hii hatuwezi tena kutumia mbinu then kwa matokeo ya kazi, kwa sababu katika tukio la kazi kurudisha nambari tutapata hitilafu:

func(0).then(function(res) { // hitilafu, tunatumia mbinu then kwa sifuri });

Kutatua tatizo hili Promise.resolve itatusaidia:

function func(num) { if (num > 0) { return new Promise(function(resolve) { setTimeout(function() { resolve(num * num); }, 3000); }); } else { return Promise.resolve(0); // tunarudisha ahadi, na si nambari } }

Hebu tuseme sasa tumekubiana, kwamba kwa nambari iliyopitishwa sifuri tunapaswa kurudisha sifuri, na kwa nambari ndogo kuliko sifuri - isipokuwe. Hii itatusaidia katika mbinu Promise.reject:

function func(num) { if (num > 0) { return new Promise(function(resolve) { setTimeout(function() { resolve(num * num); }, 3000); }); } else if (num === 0) { return Promise.resolve(0); } else { return Promise.reject('incorrect number'); // turudishe ahadi iliyokataliwa } }
Kiswahili
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Tunatumia kuki kwa ajili ya uendeshaji wa tovuti, uchambuzi na ubinafsishaji. Usindikaji wa data unafanyika kulingana na Sera ya Faragha.
kubali yote sanidi kataa