⊗jsSpPrmChE 169 of 294 menu

JavaScript да промислар занжиридаги истиснолар

Баъзи сабабларга кўра бизнинг промисимиз хато билан тугаси:

let promise = new Promise(function(resolve, reject) { setTimeout(function() { reject('error'); }, 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) { // хатолик юз берганда шу ёққа кирамиз } );

Бунда истисно ўзидаги промисда пайдо бўлиши mumkin, ёки 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) { // энг яқин ўзловчи } );

Эътибор бering, catch айникса хатоликни диагностика қилиш учун керак: у ҳал қилинадими ёки йўқми. Aгар хатолик ҳал қилинади бўлса, catch унинг ечимини ўзидан кейинги then га ўтказаши керак. Aгар ҳал қилинмаса (ёки маълум 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çeOʻzbekTiếng Việt
Биз веб-сайт ишлаши, таҳлил қилиш ва персоналлаштириш учун кукидан фойдаланамиз. Маълумотларни қайта ишлаш Махфийлик сиёсатига мувофиқ амалга оширилади.
ҳаммасини қабул қилиш мослаштириш рад этиш