9

如果我正在运行 javascript 代码,例如在计时器上执行一些操作,并且此代码嵌入在 Web 浏览器的选项卡 1 和选项卡 2 的网页中,那么客户端代码可以同时运行吗?还是 JavaScript 客户端代码总是只在一个浏览器线程中运行?

或者,如果有一个包含父框架和子框架的框架集,那么在这种情况下,javascript 代码可以同时运行吗?

是否有标准指定模型或者它依赖于浏览器?

我的主要目标环境是 IE9,所以很想知道那里发生了什么。

编辑我不是在寻找线程支持或如何在 javascript 中进行线程。我个人认为没有必要。这也让生活变得更加复杂。我只想知道我是否需要担心它,如果需要,在哪些浏览器上。

4

1 回答 1

6

对于单个 JavaScript“对象空间”(浏览器中的单个页面或 node.js 中的解释器实例),最多运行一个线程。事实上,在 JavaScript 的上下文中谈论线程是没有意义的。JS 执行模型是基于事件循环和回调的。

不同的框架永远不能同时运行,因为它们可以访问彼此的 DOM(以及扩展的任意对象)。这会使线程不安全。

使用 web worker 时,无法直接访问 worker 边界上的任何数据结构,因此线程是不可观察的并且可以安全地发生。这里唯一的通信是通过消息传递。

于 2013-03-24T11:59:11.963 回答