⊗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ščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Мы выкарыстоўваем cookie для працы сайта, аналітыкі і персаналізацыі. Апрацоўка дадзеных адбываецца згодна Палітыкай канфідэнцыяльнасці.
прыняць усе наладзіць адхіліць