⊗jsSpACCH 160 of 294 menu

Le problème du callback hell en JavaScript

Supposons que nous voulions charger trois images à l'aide de la fonction 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); });

Il y a un problème avec ce code. Le fait est que les images seront ajoutées au body au fur et à mesure de leur chargement. C'est-à-dire que rien ne nous garantit que les images seront ajoutées précisément dans l'ordre dont nous avons besoin.

Il y a autre chose. Supposons que nous voulions faire quelque chose une fois que les trois images seront chargées. Avec notre code, nous ne pourrons simplement pas saisir ce moment, car les trois images se chargent indépendamment.

Ok, refaisons le code :

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('toutes les images sont chargées'); }); }); });

Nous avons résolu les deux problèmes décrits. Cependant, nous en avons obtenu un autre en échange. Pour l'instant, il n'est pas encore très visible, mais imaginez à quoi ressemblera notre code s'il charge non pas trois, mais, disons, dix images, et si on ajoute la gestion des exceptions. En conséquence, le code deviendra extrêmement illisible : la complexité du code augmente de manière exponentielle avec l'imbrication des callbacks les uns dans les autres. Cette situation est appelée callback hell - l'enfer des callbacks.

Réécrivez le code donné afin qu'il charge 10 images plus la gestion des exceptions. Assurez-vous que vous obtenez une situation de callback hell.

Français
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nous utilisons des cookies pour le fonctionnement du site, l'analyse et la personnalisation. Le traitement des données est effectué conformément à la Politique de confidentialité.
accepter tout personnaliser refuser