Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

ทำไม JavaScript จึงไม่รองรับ Multithreading?


JavaScript เดิมเป็น Single-threaded มันทำงานด้วยสิ่งที่เรียกว่า Event Loop

Event Loop มีหน้าที่ง่ายๆ คือ ตรวจสอบ Call Stack และ Callback Queue หาก Call Stack ว่าง จะนำ Event แรกจาก Queue เข้า Call Stack ซึ่งทำให้มันรัน

JS ในเบราว์เซอร์ไม่รองรับ Multithreading ใน Event Loop เพราะไม่จำเป็นสำหรับ 99.999% ของเว็บไซต์ Event Loop จัดการทุกอย่างได้อย่างราบรื่น

สำหรับแอปที่เหลือ Developer สามารถใช้ Web Workers ได้ Web Workers เป็นวิธีง่ายๆ ให้เนื้อหาเว็บรันสคริปต์ใน Background Threads Worker Thread สามารถทำงานโดยไม่รบกวน UI นอกจากนี้ยังทำ I/O ด้วย XMLHttpRequest ได้ (แม้ responseXML และ channel จะเป็น null เสมอ) เมื่อสร้างแล้ว Worker สามารถส่งข้อความไปยังโค้ด JavaScript ที่สร้างมันโดยการ Post Messages ไปยัง Event Handler ที่ระบุไว้ (และในทางกลับกันก็ได้)