⊗jsSpACEx 158 of 294 menu

გამონაკლისები ასინქრონულ კოლბექებში JavaScript-ში

დავუშვათ, რომ თუ პარამეტრად make გადაეცემა მასივის არარსებული ელემენტის ნომერი - ეს გამონაკლისური სიტუაციაა. როგორც უკვე იცით, ასინქრონული ფუნქციის შიგნით წარმოქმნილი გამონაკლისები, ვერ ჩაიჭერება try-catch-ის მეშვეობით. ჩვენს შემთხვევაში, make-ის შიგნით ან კოლბექის შიგნით წარმოქმნილი გამონაკლისი ვერ ჩაიჭერება:

try { make(10, function(res) { console.log(res); }); } catch(err) { // ვერ ჩაიჭერება }

კოლბექ-მიდგომაში გამონაკლისებთან მუშაობენ შემდეგნაირად: კოლბექის პირველ პარამეტრში აგზავნიან შედეგს, ხოლო მეორეში - შეცდომას. ამ შემთხვევაში შეცდომების დამუშავება ხდება შემდეგნაირად:

make(10, function(res, err) { if (!err) { console.log(res); // შეცდომა არ წარმოიქმნა, გამოვიტანოთ შედეგი } else { console.log(err); // შეცდომა წარმოიქმნა, გამოვიტანოთ მისი ტექსტი } });

მოდით, გადავაკეთოთ ჩვენი ფუნქციის make-ის კოდი აღწერილის შესაბამისად:

function make(num, callback) { setTimeout(function() { let arr = [1, 2, 3, 4, 5]; let err; if (arr[num] === undefined) { err = 'elem not exists'; // შეცდომის ტექსტი } else { err = null; // შეცდომა არ არის } callback(arr[num], err); }, 3000); }
ქართული
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
ვებსაიტის მუშაობის, ანალიტიკისა და პერსონალიზაციისთვის ვიყენებთ ქუქი-ფაილებს. მონაცემთა დამუშავება ხდება Კონფიდენციალურობის პოლიტიკის შესაბამისად.
ყველას მიღება პარამეტრები უარყოფა