การเรียกใช้ฟังก์ชัน Callback JavaScript
- หน้าก่อน JS Static
- หน้าต่อไป JS ทำงานอย่างไม่มีสัญญา
"I will call back later!"
รีบความ (callback) เป็นฟังก์ชันที่ถูกส่งผ่านเป็นตัวอุปกรณ์แก่ฟังก์ชันอื่น
เทคนิคนี้อนุญาตให้ฟังก์ชันเรียกฟังก์ชันอื่น
ฟังก์ชันรีบความสามารถทำงานหลังจากฟังก์ชันอื่นเสร็จงาน
ลำดับฟังก์ชัน
ฟังก์ชัน JavaScript จะทำงานตามลำดับที่ถูกเรียก ไม่ใช่ตามลำดับที่ถูกเรียก
ตัวอย่างนี้จะแสดง "Goodbye":
ตัวอย่าง
function myFirst() { myDisplayer("Hello"); } function mySecond() { myDisplayer("Goodbye"); } myFirst(); mySecond();
ตัวอย่างนี้จะแสดง "Hello":
ตัวอย่าง
function myFirst() { myDisplayer("Hello"); } function mySecond() { myDisplayer("Goodbye"); } mySecond(); myFirst();
การควบคุมลำดับ
บางตอนคุณอยากควบคุมว่าเมื่อไหร่จะทำฟังก์ชัน
ตั้งแต่นี้คุณต้องการทำการคำนวณและแสดงผล
คุณสามารถเรียกหน่วยงานฟังก์ชันคำนวณ (myCalculator
) บันทึกผลลัพธ์ และเรียกฟังก์ชันอื่น (myDisplayer
) แสดงผล:
ตัวอย่าง
function myDisplayer(some) { document.getElementById("demo").innerHTML = some; } function myCalculator(num1, num2) { let sum = num1 + num2; return sum; } let result = myCalculator(5, 5); myDisplayer(result);
หรือ คุณสามารถเรียกหน่วยงานฟังก์ชันคำนวณ (myCalculator
) และให้หน่วยงานฟังก์ชันคำนวณเรียกหน่วยงานฟังก์ชันแสดงผล (myDisplayer
):
ตัวอย่าง
function myDisplayer(some) { document.getElementById("demo").innerHTML = some; } function myCalculator(num1, num2) { let sum = num1 + num2; myDisplayer(sum); } myCalculator(5, 5);
ปัญหาของตัวอย่างแรกคือคุณต้องเรียกฟังก์ชันสองฟังก์ชันเพื่อแสดงผล
ปัญหาของตัวอย่างที่สองคือคุณไม่สามารถหยุดหน่วยงานฟังก์ชันคำนวณแสดงผลได้
ตอนนี้เป็นเวลาที่ควรนำรีบความเข้ามาใช้
การเรียกใช้ฟังก์ชัน Callback JavaScript
รีบความเป็นฟังก์ชันที่ถูกส่งผ่านเป็นตัวอุปกรณ์แก่ฟังก์ชันอื่น
ด้วยรีบความ คุณสามารถเรียกฟังก์ชันคำนวณผ่านรีบความ (myCalculator
),และหลังจากที่การคำนวณเสร็จสิ้น ให้หน่วยงานฟังก์ชันคำนวณทำรีบความ
ตัวอย่าง
function myDisplayer(some) { document.getElementById("demo").innerHTML = some; } function myCalculator(num1, num2, myCallback) { let sum = num1 + num2; myCallback(sum); } myCalculator(5, 5, myDisplayer);
ในตัวอย่างดังกล่าว myDisplayer
เป็นชื่อฟังก์ชัน
มันถูกส่งเข้ามาเป็นพารามิเตอร์ myCalculator()
.
เมื่อคุณส่งฟังก์ชันเป็นพารามิเตอร์ จงจดจำว่าไม่ควรใช้วงล้อมเปิดปิด
ที่ถูกต้อง: myCalculator(5, 5, myDisplayer);
ความผิด: myCalculator(5, 5, myDisplayer());
เมื่อใดจึงใช้คลาสส์แบ็คคอลล์?
ตัวอย่างดังกล่าวไม่ได้น่าน่าสนใจมากนัก
เราทำให้มันเรียบง่ายขึ้น เพื่อให้คุณเข้าใจศัพท์คำของคลาสส์แบ็คคอลล์
ความที่เด่นของการใช้คลาสส์แบ็คคอลล์เกี่ยวกับฟังก์ชันทำงานอย่างไม่มีสัญญา คือฟังก์ชันหนึ่งต้องรอฟังก์ชันอื่น (เช่น รอการโหลดไฟล์)
บทที่ต่อไปจะนำเสนอเรื่องฟังก์ชันทำงานอย่างไม่มีสัญญา
- หน้าก่อน JS Static
- หน้าต่อไป JS ทำงานอย่างไม่มีสัญญา