⊗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 ซ้อนกัน สถานการณ์เช่นนี้เรียกว่า callback hell - นรกแห่ง callback

เขียนโค้ดที่ให้มาใหม่ โดยให้ โหลดรูปภาพ 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
เราใช้คุกกี้สำหรับการทำงานของเว็บไซต์ การวิเคราะห์ และการปรับเนื้อหาให้เหมาะสมส่วนบุคคล การประมวลผลข้อมูลเกิดขึ้นตาม นโยบายความเป็นส่วนตัว.
ยอมรับทั้งหมด ปรับแต่ง ปฏิเสธ