⊗jsSpACCH 160 of 294 menu

Problem callback hell v JavaScriptu

Recimo, da želimo s funkcijo loadImage naložiti tri slike:

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); });

S to kodo nekaj ni v redu. Bistvo je v tem, da bodo slike dodane v body tekom njihovega nalaganja. To pomeni, da nihče ne zagotavlja nam, da bodo slike dodane ravno v vrstnem redu, ki ga potrebujemo.

Obstaja še nekaj. Recimo, da želimo narediti nekaj, ko bodo vse tri slike naložene. V naši kodi preprosto ne moremo ujeti tega trenutka, ker se vse tri slike nalagajo neodvisno.

V redu, preoblikujmo kodo:

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('vse slike so naložene'); }); }); });

Rešili smo oba opisana problema. Vendar smo v zameno dobili drugega. Za zdaj še ni močno viden, vendar si predstavljajte, kako bo izgledala naša koda, če bo v njej nalaganje ne treh, ampak recimo desetih slik, plus dodana obdelava izjem. Kot rezultat bo koda postala izjemno neberljiva: kompleksnost kode se lavino podobno povečuje z gnezdenjem callback funkcij. Takšna situacija se imenuje callback hell - pekel callback funkcij.

Prepišite navedeno kodo tako, da bo v njej nalaganje 10 slik plus obdelava izjem. Prepričajte se, da dobite situacijo callback hell.

Slovenščina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Za delovanje spletnega mesta, analitiko in personalizacijo uporabljamo piškotke. Obdelava podatkov poteka v skladu s Politiko zasebnosti.
sprejmi vse nastavi zavrni