⊗jsSpACCH 160 of 294 menu

Callback hell-problemet i JavaScript

Låt oss säga att vi vill ladda tre bilder med funktionen 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); });

Det är något fel med den här koden. Saken är den att bilderna kommer att läggas till i body i takt med att de laddas. Det vill säga, ingen garanterar för oss att bilderna kommer att läggas till just i den ordning vi behöver.

Det finns något annat också. Låt oss säga att vi vill göra någonting när alla tre bilderna har laddats. I vår kod kommer vi helt enkelt inte att kunna fånga det här ögonblicket, eftersom alla tre bilderna laddas oberoende av varandra.

Okej, låt oss ändra koden:

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('alla bilder är laddade'); }); }); });

Vi löste båda de beskrivna problemen. Men fick ett annat problem i utbyte. Ännu är det inte så tydligt synligt, men föreställ dig hur vår kod kommer att se ut om den innehåller laddning av inte tre, utan, låt oss säga, tio bilder, plus att felhantering läggs till. Som ett resultat kommer koden att bli extremt oläsbar: kodens komplexitet ökar lavinartat vid nästling av callbacks inuti varandra. Denna situation kallas callback hell - callback-helvetet.

Skriv om den givna koden så att den inkluderar laddning av 10 bilder plus felhantering. Övertyga dig själv om att du får en callback hell-situation.

Svenska
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi använder kakor för webbplatsens funktion, analys och personalisering. Behandling av data sker i enlighet med Integritetspolicyn.
acceptera alla anpassa avvisa