Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

ทำไม JavaScript ไม่รองรับมัลติเธรด


JavaScript เคยเป็นแบบเธรดเดียว มันทำงานโดยใช้สิ่งที่เรียกว่าวนรอบเหตุการณ์

Event Loop มีงานง่ายๆ เพียงงานเดียว — เพื่อตรวจสอบ Call Stack และ Callback Queue หาก Call Stack ว่างเปล่า ระบบจะดึงเหตุการณ์แรกจากคิวและพุชไปที่ Call Stack ซึ่งจะรันได้อย่างมีประสิทธิภาพ

JS ในเบราว์เซอร์ไม่รองรับมัลติเธรดในลูปเหตุการณ์ เนื่องจากไม่จำเป็นสำหรับเว็บไซต์ 99.999% วนรอบเหตุการณ์จัดการทุกอย่างได้อย่างราบรื่น

สำหรับแอปที่เหลือ นักพัฒนาสามารถใช้ Web Worker Web Workers เป็นวิธีการง่ายๆ สำหรับเนื้อหาเว็บในการเรียกใช้สคริปต์ในเธรดพื้นหลัง เธรดผู้ปฏิบัติงานสามารถทำงานโดยไม่รบกวนส่วนต่อประสานผู้ใช้ นอกจากนี้ พวกเขาสามารถดำเนินการ I/O โดยใช้ XMLHttpRequest (แม้ว่าแอตทริบิวต์ responseXML และช่องจะเป็นโมฆะเสมอ) เมื่อสร้างแล้ว ผู้ปฏิบัติงานสามารถส่งข้อความไปยังโค้ด JavaScript ที่สร้างโดยโพสต์ข้อความไปยังตัวจัดการเหตุการณ์ที่ระบุโดยโค้ดนั้น (และในทางกลับกัน) บทความนี้ให้รายละเอียดเบื้องต้นเกี่ยวกับการใช้ Web Worker