⊗jsSpPrmChE 169 of 294 menu

Ishara za Kuzuia Katika Minyororo ya Ahadi katika JavaScript

Hebu kwa sababu zozote ahadi yetu imalizike kwa hitilafu:

let promise = new Promise(function(resolve, reject) { setTimeout(function() { reject('error'); }, 3000); });

Katika kesi hii utekelezaji wa kodi utaenda mara moja kwa then ile, ambayo ina kitendakazi-kichakataji hitilafu, au kwa catch ya kwanza, inategemea nini kitakachokutana kwanza.

Hapa kuna mfano wa hali ya kwanza:

promise.then( function(result) { return result + '1'; } ).then( function(result) { return result + '2'; }, function(error) { // utekelezaji utaenda mara moja hapa } ).then( function(result) { console.log(result); } );

Hapa kuna mfano wa hali ya pili:

promise.then( function(result) { return result + '1'; } ).then( function(result) { return result + '2'; } ).catch( function(error) { // utekelezaji utaenda mara moja hapa } ).then( function(result) { console.log(result); } );

Kitendakazi-kichakataji kina chaguzi mbili za vitendo: kikiweza kukabiliana na hali ya ishara, kinaweza kurudisha matokeo kupitia return na utekelezaji utaendelea zaidi kwenye mnyororo. Kama hakiwezi kukabiliana na hitilafu, inaweza au kurudisha chochote, au kutupa ishara kupitia throw. Katika kesi hii utekelezaji utaenda kwa kichakataji hitilafu kinachofuata (katika then au catch - nini kitakachokutana kwanza).

Kwa kawaida, hitilafu zote za mnyororo hushikwa katika sehemu moja: mwisho wa mnyororo huwekwa catch:

promise.then( function(result) { return result + '1'; } ).then( function(result) { return result + '2'; } ).catch( function(error) { // tutaingia hapa kwa kesi ya hitilafu } );

Wakati huo huo ishara inaweza kutokea kwenye ahadi yenyewe, au kutupwa kupitia throw katika kiungo chochote cha mnyororo:

promise.then( function(result) { return result + '1'; } ).then( function(result) { if (kilaKituSawa) { return result + '2'; } else { throw new Error('hitilafu'); // tunaenda kwa kichakataji wa karibu } } ) .then( function(result) { return result + '3'; } ).catch( function(error) { // kichakataji wa karibu } );

Zingatia, kuwa catch inahitajika hasa kwa kutambua hitilafu: inawezekana kutatuliwa au la. Kama hitilafu inaweza kutatuliwa, basi catch inapaswa kupitisha suluhisho lake kwa then inayofuata. Na kama haitatuliki (au catch hii hajui tu jinsi ya kuitatua), basi tunapaswa kurudisha chochote au kutupa ishara:

promise.then( function(result) { return result + '1'; } ).then( function(result) { return result + '2'; } ).catch( function(error) { if (hitilafuInatulika) { return 'data'; // tunapeleka kwa then inayofuata } else { // hurudishi chochote au unatupa ishara } } ).then( function(result) { // hapa tunatatua hitilafu } );
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