คุณอาจเคยเห็นตัวอย่างโค้ดบางส่วนใช้คำว่า "โทรกลับ" ในฟังก์ชัน การเรียกกลับเป็นฟังก์ชันชนิดพิเศษที่ส่งผ่านภายในฟังก์ชันอื่น
การโทรกลับมักใช้ในตัวจัดการเหตุการณ์เพื่อเรียกใช้บล็อกของโค้ด ในคู่มือนี้ เราจะพูดถึงว่าฟังก์ชันการโทรกลับคืออะไรและทำงานอย่างไร เราจะพูดถึงตัวอย่างของฟังก์ชันเรียกกลับเพื่อช่วยให้คุณเรียนรู้วิธีใช้ในโค้ดของคุณ
ฟังก์ชันเรียกกลับคืออะไร
ฟังก์ชันเรียกกลับเป็นฟังก์ชันที่ส่งผ่านเป็นพารามิเตอร์ไปยังฟังก์ชันอื่น
ฟังก์ชันเรียกกลับทำงานภายในฟังก์ชันที่มีการประกาศ เมื่อคุณเรียกใช้ฟังก์ชัน ฟังก์ชันเรียกกลับ หากมีการระบุไว้ จะเรียกใช้งาน เมื่อเรียกใช้แล้ว ฟังก์ชันเรียกกลับจะส่งคืนการตอบสนองต่อฟังก์ชันหลัก
ฟังก์ชันเรียกกลับใช้งานได้เพราะใน JavaScript ทุกฟังก์ชันเป็นวัตถุ ซึ่งหมายความว่าเราสามารถทำงานกับพวกมันได้เหมือนกับวัตถุอื่นๆ เราสามารถกำหนดฟังก์ชันให้กับตัวแปร หรือส่งผ่านเป็นอาร์กิวเมนต์ เหมือนกับที่เราทำกับค่าอื่นๆ
ลองใช้ตัวอย่างง่ายๆ เพื่อแสดงให้เห็นว่าการโทรกลับทำงานอย่างไร เราจะสร้างฟังก์ชันที่พิมพ์ชื่อผู้ใช้สำหรับวิดีโอเกมไปยังคอนโซล ตามด้วยประเภทอักขระ เริ่มต้นด้วยการประกาศฟังก์ชัน:
function printName(name, callback) { console.log(`Player Name: ${name}`); callback(); }
นี่คือฟังก์ชัน JavaScript ที่ไม่ระบุชื่อซึ่งมีการเรียกกลับ ฟังก์ชันที่ไม่ระบุชื่อคือฟังก์ชันที่ไม่มีชื่อ มักจะปรากฏในฟังก์ชันอื่นๆ เช่นในตัวอย่างด้านบน
การเรียกกลับนี้เป็นพารามิเตอร์ตัวที่สองในโค้ดของเรา เมื่อเรียกใช้ฟังก์ชันนี้ ชื่อของเครื่องเล่นของเราจะถูกพิมพ์ไปที่คอนโซล จากนั้น เนื้อหาของฟังก์ชัน callback() ของเราจะถูกดำเนินการ
81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้
ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก
มาลองใช้ฟังก์ชันนี้กัน:
printName("Violet", function() { console.log("Character Type: Mage"); })
เราเรียกฟังก์ชันของเราว่า printName()
ในรหัสนี้ เราได้ระบุ “ไวโอเล็ต” เป็นชื่อผู้เล่น เราได้ระบุฟังก์ชันที่พิมพ์ประเภทอักขระเป็นการเรียกกลับ เรียกใช้รหัสนี้และดูว่าเกิดอะไรขึ้น:
ชื่อผู้เล่น:ไวโอเล็ต
ประเภทตัวละคร:นักเวทย์
เนื้อหาของ printName()
ฟังก์ชั่นถูกดำเนินการ ตามด้วยเนื้อหาของฟังก์ชั่นการโทรกลับของเรา คุณไม่จำเป็นต้องประกาศฟังก์ชันการโทรกลับเมื่อคุณส่งผ่านฟังก์ชันเหล่านี้เป็นพารามิเตอร์ เราสามารถจัดโครงสร้างโค้ดของเราใหม่เพื่อให้ฟังก์ชันการโทรกลับเป็นของตัวเอง:
function printCharacterType() { console.log("Character Type: Mage"); } printName("Violet", printCharacterType())
รหัสนี้จะส่งคืนการตอบกลับเดียวกัน เราได้สร้างฟังก์ชันที่เรียกว่า printCharacterType()
ซึ่งพิมพ์ประเภทอักขระของผู้เล่นไปที่คอนโซล ฟังก์ชันนี้ทำงานเมื่อเราเรียกใช้ printName()
ตามที่ระบุเป็นการโทรกลับ
การใช้การโทรกลับกับเหตุการณ์
โดยทั่วไปจะใช้การโทรกลับกับเหตุการณ์ JavaScript
เหตุการณ์จะคอยฟังการดำเนินการ เช่น ผู้ใช้คลิกปุ่ม และเรียกใช้บล็อกโค้ดเมื่อมีการดำเนินการนั้น มาสร้างการโทรกลับซึ่งทำงานเมื่อผู้ใช้วางเมาส์เหนือรูปภาพ เปิดไฟล์ HTML และวางโค้ดต่อไปนี้ในแท็ก
:
<img src=“
https://careerkarma.com/favicon.ico
” id=“image” />
สิ่งนี้กำหนดรูปภาพบนหน้าเว็บที่ผู้ใช้สามารถคลิกได้ จากนั้น ให้ใส่โค้ด JavaScript ต่อไปนี้ภายใน <script>
แท็ก:
var image = document.querySelector("#image") image.addEventListener("mouseover", function() { console.log("The user has moused over the image."); });
รหัสนี้เลือกองค์ประกอบที่มี ID "รูปภาพ" จากนั้นใช้เมธอด addEventListener เพื่อฟังเมื่อผู้ใช้ "เลื่อนเมาส์ไปเหนือ" (เลื่อนเมาส์ไปเหนือ) รูปภาพ เมื่อผู้ใช้วางเคอร์เซอร์เหนือรูปภาพ จะมีการพิมพ์ข้อความไปที่คอนโซล:
ผู้ใช้วางเมาส์เหนือรูปภาพ
การใช้การโทรกลับกับคำขอทางเว็บ
โดยปกติการร้องขอทางเว็บจะต้องดำเนินการในลักษณะซิงโครนัส เนื่องจากเว็บแอปพลิเคชันส่วนใหญ่จำเป็นต้องดึงข้อมูลบางอย่างก่อนจึงจะสามารถโหลดหน้าที่เหลือได้
มาสร้างโปรแกรมที่ส่งคำขอไปยัง JSON Placeholder API ซึ่งเป็น API ที่มีข้อมูลจำลองที่เราสามารถใช้เพื่อการทดสอบ โปรแกรมของเราควรพิมพ์การตอบสนองต่อคอนโซล เราจะเริ่มต้นด้วยการประกาศฟังก์ชันที่ส่งคำขอ:
function makeRequest(url, callback) { var query = await fetch(url).then(res => res.json()); callback(query); }
ฟังก์ชันนี้จะสร้างคำขอเว็บโดยใช้ fetch() API การตอบสนองถูกกำหนดให้กับตัวแปร "แบบสอบถาม" เราส่งคืนผลลัพธ์ของคำขอเว็บนี้ไปยังการโทรกลับของเราโดยส่ง "แบบสอบถาม" เป็นอาร์กิวเมนต์ในฟังก์ชันการโทรกลับของเรา ตอนนี้ มาเรียกใช้ฟังก์ชันของเราและพิมพ์การตอบสนองต่อคอนโซล:
makeRequest("https://jsonplaceholder.typicode.com/posts/1", function(data) { console.log(data); });
รหัสนี้แนะนำเมธอด makeRequest เพื่อส่งคำขอไปยัง JSON Placeholder API ฟังก์ชันเรียกกลับของเราจะพิมพ์ข้อมูลที่ส่งคืนจากคำขอนี้ไปยังคอนโซล:
{ "userId": 1, "id": 1, "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit", "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto." }
ยอดเยี่ยม! รหัสของเราได้ส่งคำขอทางเว็บและพิมพ์การตอบกลับไปยังคอนโซล
บทสรุป (และความท้าทาย)
การเรียกกลับช่วยให้คุณสามารถส่งผ่านฟังก์ชันเป็นพารามิเตอร์ภายในฟังก์ชันอื่นได้ โดยทั่วไปจะใช้ภายในตัวจัดการเหตุการณ์เพื่อเรียกใช้โค้ดเมื่อมีการดำเนินการเหตุการณ์หรือเพื่อขอเว็บ
คุณกำลังมองหาสิ่งที่ท้าทาย? เขียนฟังก์ชันเรียกกลับซึ่งทำงานเมื่อมีการกดปุ่มบนหน้าเว็บ หากคุณทำเสร็จแล้ว ให้ลองเขียนฟังก์ชันที่เรียงลำดับรายการและใช้ฟังก์ชันเรียกกลับเพื่อพิมพ์แต่ละรายการไปยังคอนโซล
ตอนนี้คุณพร้อมที่จะเริ่มใช้การเรียกกลับ JavaScript สำหรับการเขียนโปรแกรมแบบอะซิงโครนัสอย่างมืออาชีพแล้ว!