⊗jsSpACCH 160 of 294 menu

Проблема callback hell во JavaScript

Да претпоставиме дека сакаме да вчитаме три слики со функцијата loadImage:

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

Со овој код нешто не е во ред. Работата е во тоа дека сликите ќе се додаваат во body како што се вчитуваат. Односно, никој не ни гарантира дека сликите ќе се додадат токму во редоследот што ни е потребен.

Има уште нешто. Да претпоставиме дека сакаме да направиме нешто кога сите три слики ќе се вчитаат. Во нашиот код едноставно нема да можеме да го фатиме овој момент, бидејќи сите три слики се вчитуваат независно.

Во ред, да го преработиме кодот:

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('сите слики се вчитани'); }); }); });

Ги решивме опишаните проблеми. Сепак, за возврат добивме друг. Сеуште не е многу видлива, но замислете како ќе изгледа нашиот код ако во него има вчитување не на три, туку, да речеме, десет слики, плус додадена обработка на исклучоци. Како резултат, кодот ќе стане екстремно нечитлив: комплексноста на кодот лавинообразно расте со вгнездувањето на колбековите еден во друг. Таквата ситуација се нарекува callback hell - пекол на колбекови.

Препишете го дадениот код така што во него ќе има вчитување на 10 слики плус обработка на исклучоци. Уверете се дека добивате ситуација на callback hell.

Македонски
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние користиме колачиња за работата на веб-страната, анализа и персонализација. Обработката на податоци се врши во согласност со Политиката за приватност.
прифати ги сите прилагоди одбиј