⊗jsSpPrmChE 169 of 294 menu

JavaScript-da pursatlar zynjyrynda çaklamalar

Gowşuranyň, nämä üçindir biziň pursadymyz säwlik bilen gutarýar:

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

Bu ýagdaýda kodyň ýerine ýetirilmegi derrew geçer o then-a, niredä säwligiň işleýji funksiýasy bar ýa-da birinji catch-a, nämesiniň öňüni alýandygyna garap.

Bu ýerde birinji ýagdaýyň mysaly:

promise.then( function(result) { return result + '1'; } ).then( function(result) { return result + '2'; }, function(error) { // ýerine ýetirilmegi derrew şu ýere geçer } ).then( function(result) { console.log(result); } );

Bu ýerde ikinji ýagdaýyň mysaly:

promise.then( function(result) { return result + '1'; } ).then( function(result) { return result + '2'; } ).catch( function(error) { // ýerine ýetirilmegi derrew şu ýere geçer } ).then( function(result) { console.log(result); } );

Işleýji funksiýanyň hereket etmek üçin iki warianty bar: eger ol çaklama ýagdaýy bilen işlän bolsa, onda return arkaly netijäni gaýdyp biler we ýerine ýetirilmegi zynjyr boýunça dowam eder. Eger bolsa ol säwlik bilen işlän bolmasa, onda ýa-da hiç zat gaýtarmaz, ýa-da çaklamany throw arkaly taşlap biler. Bu ýagdaýda ýerine ýetirilmegi indiki säwlik tutujy öňüne geçer (then ýa-da catch - nämesiniň öňüni alýandygyna garap).

Adatça, zynjyryň ähli säwlikleri bir ýerde tutulýar: zynjyryň ahyrynda ýerleşdirilýär catch:

promise.then( function(result) { return result + '1'; } ).then( function(result) { return result + '2'; } ).catch( function(error) { // säwlik ýagdaýynda şu ýere düşeris } );

Şonuň bilen çaklama özünde pursatda döräp biler, ýa-da throw arkaly zynjyryň haýsy hem bolsa bir baglanyşygynyň işinde taşlap biliner:

promise.then( function(result) { return result + '1'; } ).then( function(result) { if (hemmeGowy) { return result + '2'; } else { throw new Error('säwlik'); // iň ýakyn tutujy öňüne geçýäris } } ) .then( function(result) { return result + '3'; } ).catch( function(error) { // iň ýakyn tutujy } );

Üns beriň, catch aslynda zerurdyr säwligiň diagnostikasy üçin: oňa çözgüt tapylýarmy ýa-da ýokmy. Eger säwlige çözgüt tapylýan bolsa, onda catch onuň çözgüdini özünden soňky then-e geçirmeli. Eger bolsa çözgüt tabyly bolmasa (ýa-da bu catch diňe onuň nähili çözmelidigini bilmeýän), onda biz ýa-da hiç zat gaýtarmaly däl ýa-da çaklama taşlamaly:

promise.then( function(result) { return result + '1'; } ).then( function(result) { return result + '2'; } ).catch( function(error) { if (säwlikÇözüliýär) { return 'maglumatlar'; // indiki then-e iberýäris } else { // hiç zat gaýtarmaly däl ýa-da çaklama taşlamaly } } ).then( function(result) { // şu ýerde säwligi çözýäris } );
Türkmen
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkçeЎзбекOʻzbekTiếng Việt
Biz sahypanyň işlemegi, analitika we şahsyýetleşdirmek üçin cookie ulanýarys. Maglumatlaryň işlenişi Gizlinlik syýasaty boýunça amala aşyrylýar.
hemmesini kabul et sazlamak ret et