callback เป็นรูปแบบที่เป็นเอกลักษณ์ของ nodejs เลย เป็นการสร้างฟังก์ชันที่มีการใช้คำสั่ง callback ในการคืนค่าและจบการทำงานของฟังก์ชัน มีวิธีการสร้างดังตัวอย่างข้างล่างต่อไปนี้
ตัวอย่าง
ตัวอย่างสร้างฟังก์ชันชื่อ multiply_x2 ทำงานรับเลขเข้ามาคุณสองแล้ว return ค่ากลับ ตอนประกาศฟังก์ชันรับตัวแปรชื่อ num จึงจะประกาศรับตัวแปรเข้ามาเพิ่มอีกก็ได้แต่ให้สุดท้ายมีประกาศ callback เวลา return ผลลัพธ์กลับให้ใช้ callback โดยใส่ค่าที่ต้องการเข้าไปในคำสั่ง callback ดังตัวอย่างเช่น callback( num * 2, err ) คือการคืนค่าผลลัพธ์ของตัวแปร num * 2 กับตัวแปร err โดยนี้เป็นรูปแบบตายตัวเลยนะให้ส่งผลลัพธ์กับค่า error กลับมาเสมอ กรณีที่ฟังก์ชันทำงานได้ปกติดีให้คืนค่า err เป็น null และในกรณีที่มี error ให้คืนค่าผลลัพธ์เป็น null ส่วน error ก็คืนกลับ
สรุปหลักง่ายๆ
กรณีปกติ คืน ผลลัพธ์ กับ null
กรณี error คืน null กับ error
ข้างบนคือตอนนำไปใช้งาน ตัวอย่างใส่ค่า 16 เข้าไปในฟังก์ชัน ต่อมาเป็นฟังก์ชันที่มีตัวแปรเป็น result กับ err ตัวแปร result คือผลลัพท์จากฟังก์ชัน callback ส่วน err เป็นค่า error แนะนำให้เช็คตัวแปร err ก่อนว่าเป็น null หรือไม่เพราะถ้าไม่ใช่ null แปลว่าโปรแกรมมี error ให้ throw error หรือจัดการกับ error นั้นตามความเหมาะสม
นี่คือผลลัพธ์จากตัวอย่าง ถ้าเราสร้างฟังก์ชัน callback หลายๆฟังก์ชันแล้วทำงานเรียกใช้ต่อกันดังตัวอย่างข้างล่างนี้ มีความเป็นไปได้ที่โค้ดจะไม่ได้ทำงานตามลำดับจากบนลงล่างนะ คือพอเป็น callback หลักการคือทำเสร็จก่อนได้ก่อน ตัวอย่างโค้ดข้างล่างบางทีอาจได้ผลลัพธ์ 4 ก่อน 8 ก็ได้นะ
ถ้าอยากบังคับให้ฟังก์ชันทำงานต่อกันล่ะ ให้นำฟังก์ชันไปซ้อนกันแบบโค้ดด้านล่างนี้ครับ
จากโค้ดด้านบนถ้าต้องการบังคับให้ฟังก์ชันทำงานต่อกันหลายฟังก์ชันมากกว่านี้ จะมีการซ้อนฟังก์ชันกันลึกแบบนี้ไปเรื่อยๆ สุดท้ายโค้ดจะอ่านไม่สะดวกแถมไม่สวยอีกต่างหาก โค้ดจะดูลึกเป็นพีระมิดไปเรื่อยๆ ต่อมาปัญหานี้ก็ถูกแก้ด้วยการมาของ Promise สามารถอ่านเรื่อง Promise ต่อได้เลย
ความคิดเห็น
แสดงความคิดเห็น