⊗jsSpACCH 160 of 294 menu

El problema del callback hell en JavaScript

Supongamos que queremos cargar tres imágenes usando la función 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); });

Hay algo que no está bien con este código. El problema es que las imágenes se agregarán al body a medida que se carguen. Es decir, nadie nos garantiza que las imágenes se agregarán exactamente en el orden que necesitamos.

Hay algo más. Supongamos que queremos hacer algo cuando las tres imágenes estén cargadas. En nuestro código, simplemente no podremos detectar ese momento, ya que las tres imágenes se cargan de forma independiente.

Bien, modifiquemos el código:

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('todas las imágenes están cargadas'); }); }); });

Resolvimos ambos problemas descritos. Sin embargo, obtuvimos otro a cambio. Todavía no es muy visible, pero imagina cómo se verá nuestro código si tiene la carga no de tres, sino, digamos, diez imágenes, más se agrega el manejo de excepciones. Como resultado, el código se volverá extremadamente ilegible: la complejidad del código crece de forma avalanchosa al anidar callbacks unos dentro de otros. Esta situación se llama callback hell - infierno de callbacks.

Reescribe el código proporcionado para que cargue 10 imágenes más el manejo de excepciones. Compruébá que obtienes la situación del callback hell.

Español
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Usamos cookies para el funcionamiento del sitio, análisis y personalización. El procesamiento de datos se realiza de acuerdo con la Política de privacidad.
aceptar todas configurar rechazar