JavaScript แบบ Synchronous และ Asynchronous

JavaScript ทำงานบน single thread ซึ่งหมายความว่ามันจะประมวลผลทีละอย่าง คุณจำเป็นต้องเข้าใจวิธีที่มันจัดการกับงานต่างๆ เพื่อที่จะเขียนโค้ดได้อย่างมีประสิทธิภาพ

JavaScript แบบ Synchronous

โค้ดแบบ Synchronous จะทำงานทีละบรรทัด โดยแต่ละงานจะต้องรอให้งานก่อนหน้าเสร็จสิ้นก่อน สิ่งนี้เรียกว่าการ blocking หากงานใดงานหนึ่งใช้เวลานาน โปรแกรมทั้งหมดก็จะหยุดชะงัก

JavaScript แบบ Asynchronous

โค้ดแบบ Asynchronous จะทำงานอย่างเป็นอิสระ งานต่างๆ จะไม่ไปขัดขวาง (block) โค้ดส่วนอื่นในขณะที่กำลังรอ สิ่งนี้เรียกว่า non-blocking โดยงานจะเริ่มทำงานในพื้นหลัง (background) และจะแจ้งเตือนคุณเมื่อทำงานเสร็จสิ้น

3 วิธีในการจัดการกับงานแบบ asynchronous:

  1. Callbacks: ฟังก์ชันที่จะทำงานหลังจากงานเสร็จสิ้น
  2. Promises: ออบเจกต์ที่แสดงถึงความสำเร็จหรือความล้มเหลวของการทำงาน
  3. Async/Await: วิธีที่สะอาดที่สุด ช่วยให้โค้ดแบบ asynchronous ดูเหมือนโค้ดแบบ synchronous โดยไม่ไปขัดขวาง (block) การทำงานของ thread

การทำงานแบบ asynchronous ที่พบบ่อย:

Event Loop คือสิ่งที่ทำให้สิ่งนี้ทำงานได้ โดยจะใช้ Call Stack, Web APIs และ Callback Queue ในการจัดการงานหลายอย่างพร้อมกัน

สรุป:

Source: https://www.geeksforgeeks.org/javascript/synchronous-and-asynchronous-in-javascript/ Source: https://www.w3schools.com/js/js_asynchronous.asp Source: https://medium.com/@mohdtalib.dev/what-is-synchronous-and-asynchronous-in-javascript-07adb7b4cc5f

Full post: https://dev.to/raja_b_0c9d242e2c26cf063b/javascript-synchronous-and-asynchronous-2a69