Ang*_*ber 9 javascript multithreading
如果我运行了javascript代码,例如在计时器上执行某些操作,并且此代码嵌入在Web浏览器的选项卡1和选项卡2中的网页中,那么客户端代码可以同时运行吗?或者javascript客户端代码是否总是只在一个浏览器线程中运行?
或者,如果有一个包含父框架和子框架的框架集,那么javascript代码可以在这种情况下同时运行吗?
是否有标准的指定型号或是否依赖于浏览器?
我的主要目标环境是IE9,所以有兴趣知道那里发生了什么.
编辑我不是在寻找线程支持或如何在JavaScript中进行线程化.我个人认为没有必要.它也使生活变得更加复杂.我只是想知道我是否需要担心它,如果是这样的话,在哪些浏览器上.
对于单个JavaScript"对象空间"(浏览器中的单个页面或node.js中的解释器实例),最多只有一个线程在运行.事实上,在JavaScript的上下文中谈论线程是没有意义的.JS执行模型是基于事件循环和回调的.
不同的帧永远不能同时运行,因为它们可以访问彼此的DOM(以及扩展的任意对象).这会使线程不安全.
对于Web工作者,不能直接访问跨工作者边界的任何数据结构,因此无法观察到线程并且可以安全地进行.这里唯一的沟通是通过消息传递.