⊗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šuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Користимо колачиће за рад сајта, аналитику и персонализацију. Обрада података се врши у складу са Политиком приватности.
прихвати све подеси одбиј