⊗jsSpPrmChE 169 of 294 menu

Истисноҳо дар занҷири ваъдҳо дар JavaScript

Бигзор ба сабабҳое ваъди мо бо хатогӣ анҷом ёбад:

let promise = new Promise(function(resolve, reject) { setTimeout(function() { reject('хатогӣ'); }, 3000); });

Дар ин ҳолат иҷрои рамз фавран ба он then мегузарад, ки дар он функсияи коркарди хатогӣ вуҷуд дорад, ё ба аввалин catch, вобаста ба он чи пештар вохӯрда мешавад.

Инҷо мисоли ҳолати аввал аст:

promise.then( function(result) { return result + '1'; } ).then( function(result) { return result + '2'; }, function(error) { // иҷроӣ фавран ба инҷо мегузарад } ).then( function(result) { console.log(result); } );

Инҷо мисоли ҳолати дуюм аст:

promise.then( function(result) { return result + '1'; } ).then( function(result) { return result + '2'; } ).catch( function(error) { // иҷроӣ фавран ба инҷо мегузарад } ).then( function(result) { console.log(result); } );

Функсияи коркунӣ ду варианти амал дорад: агар он вазъияти истисноиро рафъ карда бошад, пас метавонад натиҷаро тавассути return баргардонад ва иҷрои рамз дар занҷир идома хоҳад ёфт. Агар он хатогиро рафъ накарда бошад, пас метавонад ё чизе баргардонад, ё истисноро тавассути throw партояд. Дар ин ҳолат иҷро ба коркунии навбатии хатогӣ мегузарад (дар then ё catch - он чи ки пештар вохӯрда мешавад).

Одатан, ҳамаи хатогиҳои занҷир дар як ҷо гирифта мешаванд: дар охири занҷир catch ҷойгир карда мешавад:

promise.then( function(result) { return result + '1'; } ).then( function(result) { return result + '2'; } ).catch( function(error) { // дар сурати хатогӣ ба инҷо меоем } );

Дар ин ҳол истисно метавонад худи ваъд пайдо шавад, ё тавассути throw дар ҳар як ҳалқаи занҷир партоянд:

promise.then( function(result) { return result + '1'; } ).then( function(result) { if (ҳамаи чиз хуб аст) { return result + '2'; } else { throw new Error('хатогӣ'); // ба наздиктарин коркун мегузарем } } ) .then( function(result) { return result + '3'; } ).catch( function(error) { // наздиктарин коркунӣ } );

Диққат дошта бошед, ки catch барои ташхиси хатогӣ зарур аст: он ҳалшаванда аст ё не. Агар хатогӣ ҳалшаванда бошад, пас catch бояд ҳалли онро ба then-и баъдаш гузаронад. Ва агар ҳалнашаванда бошад (ё ин catch танҳо намедонад, ки чӣ гуна онро ҳал кунад), пас мо бояд ё чизе баргардонем ё истисно партоем:

promise.then( function(result) { return result + '1'; } ).then( function(result) { return result + '2'; } ).catch( function(error) { if (хатогӣҲалшавандаАст) { return 'маълумот'; // ба then-и навбатӣ мефиристем } else { // чизе барнамегардонем ё истисно мепартоем } } ).then( function(result) { // дар ин ҷо хатогиро ҳал мекунем } );
Тоҷикӣ
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Мо барои коркарди сомона, таҳлил ва шахсӣ кардан аз cookie истифода мебарем. Коркарди маълумот мувофиқи Сиёсати махфият сурат мегирад.
ҳамаро қабул кардан танзим кардан рад кардан