⊗jsSpACCH 160 of 294 menu

Callback hell problema JavaScript'e

Tarkime, kad norime naudodami funkciją loadImage įkelti tris paveikslėlius:

loadImage('img1.png', function(image, err) { document.body.append(image); }); loadImage('img2.png', function(image, err) { document.body.append(image); }); loadImage('img3.png', function(image, err) { document.body.append(image); });

Su šiuo kodu yra tam tikra problema. Esmė ta, kad paveikslėliai bus pridedami prie body pačiu jų įkėlimo metu. Tai yra, niekas mums negarantuoja, kad paveikslėliai bus pridėti būtent ta tvarka, kuri mums reikalinga.

Yra dar vienas dalykas. Tarkime, kad norime padaryti kažką, kai bus įkelti visi trys paveikslėliai. Mūsų kode mes tiesiog negalėsime pagauti šio momento, nes visi trys paveikslėliai įkeliami nepriklausomai.

Gerai, perrašykime kodą:

loadImage('img1.png', function(image1, err1) { document.body.append(image1); loadImage('img2.png', function(image2, err2) { document.body.append(image2); loadImage('img3.png', function(image3, err3) { document.body.append(image3); console.log('visi paveikslėliai įkelti'); }); }); });

Išsprendėme abi aprašytas problemas. Tačiau, gavome kitą problemą mainais. Kol kas ji dar nelabai matoma, bet įsivaizduokite, kaip atrodys mūsų kodas, jeigu jame bus ne trijų, o, tarkime, dešimties paveikslėlių įkėlimas, plius bus pridėta išimčių apdorojimas. Dėl to kodas taps itin neįskaitomas: kodo sudėtingumas staigiai auga įdedant atgalinio iškvietimo funkcijas vieną į kitą. Tokia situacija vadinama callback hell - atgalinio iškvietimo pragaras.

Perrašykite pateiktą kodą taip, kad jame būtų 10 paveikslėlių įkėlimas plius išimčių apdorojimas. Įsitikinkite, kad gaunate callback hell situaciją.

Lietuvių
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mes naudojame slapukus svetainės veikimui, analizei ir personalizavimui. Duomenų apdorojimas vyksta pagal Privatumo politiką.
priimti visus nustatyti atšaukti