ฉันเพิ่งเริ่มใช้โหนดและสิ่งหนึ่งที่ฉันสังเกตเห็นได้อย่างรวดเร็วก็คือการโทรกลับอย่างรวดเร็วสามารถสร้างการเยื้องระดับที่บ้าบิ่นได้อย่างไร:
doStuff(arg1, arg2, function(err, result) {
doMoreStuff(arg3, arg4, function(err, result) {
doEvenMoreStuff(arg5, arg6, function(err, result) {
omgHowDidIGetHere();
});
});
});
คู่มือสไตล์อย่างเป็นทางการกล่าวว่าจะนำแต่ละโทรกลับในฟังก์ชั่นที่แยกกัน แต่ที่ดูเหมือนว่ามากเกินไปข้อ จำกัด ในการใช้งานของการปิดและทำให้วัตถุเดียวที่ประกาศในระดับบนสุดที่มีหลายชั้นลงเป็นวัตถุจะต้องมีการผ่านทั้งหมด การเรียกกลับระดับกลาง
การใช้ขอบเขตฟังก์ชั่นช่วยได้หรือไม่? ใส่ฟังก์ชั่นการโทรกลับทั้งหมดที่ต้องการเข้าถึงวัตถุ Global-ish ภายในฟังก์ชั่นที่ประกาศวัตถุนั้นดังนั้นมันจึงปิดลง?
function topLevelFunction(globalishObject, callback) {
function doMoreStuffImpl(err, result) {
doMoreStuff(arg5, arg6, function(err, result) {
callback(null, globalishObject);
});
}
doStuff(arg1, arg2, doMoreStuffImpl);
}
และอีกหลายเลเยอร์ ...
หรือมีกรอบ ฯลฯ เพื่อช่วยลดระดับของการเยื้องโดยไม่ต้องประกาศฟังก์ชั่นที่มีชื่อสำหรับการโทรกลับทุกครั้งหรือไม่ คุณจะจัดการกับปิรามิดโทรกลับได้อย่างไร