为什么 JavaScript 不支持多线程?
javascriptfront end technologyobject oriented programming
JavaScript 曾经是单线程的。它使用所谓的事件循环运行。
事件循环有一个简单的工作 - 监控调用堆栈和回调队列。如果调用堆栈为空,它将从队列中获取第一个事件并将其推送到调用堆栈,从而有效地运行它。
浏览器中的 JS 不支持事件循环中的多线程,因为 99.999% 的网站不需要它。事件循环无缝处理一切。
对于其余的应用程序,开发人员可以使用 Web 工作线程。Web 工作线程是 Web 内容在后台线程中运行脚本的简单方法。工作线程可以在不干扰用户界面的情况下执行任务。此外,它们可以使用 XMLHttpRequest 执行 I/O(尽管 responseXML 和 channel 属性始终为空)。创建后,Worker 可以通过将消息发布到创建它的 JavaScript 代码指定的事件处理程序来向该代码发送消息(反之亦然)。本文详细介绍了如何使用 Web Worker。