浏览器仍然是单线程吗?

时间:2015-03-05 01:40:37

标签: javascript

我听了Crockford关于Javascript(2006)的旧讲座,他正在谈论模型

Flow  -> Paint
  ^        | 
  |        v
Script <- Event

(一个涉及Flow,paint,event,script ......的循环),说“因为所有浏览器都是单线程的”。

所以,我的问题是,他们还是单线程吗?

对于那些可能知道的人来说,这些视频讲座是否仍然与所教授的内容相关?

2 个答案:

答案 0 :(得分:1)

就运行的JavaScript而言,是的。这通常不是问题,因为您打算在JavaScript中执行的任何可能需要超过一毫秒的内容都可以表示为&#34;异步&#34;操作(例如,AJAX请求,动画转换等)。这意味着您的所有代码都会启动操作,并注册可能的回调以完成它。

有一个非常罕见的例外情况,那就是拥有一个&#34; Web Worker&#34;,但我从来没有真正看到那些投入使用。

答案 1 :(得分:1)

技术上是的,他们仍然在处理在前端生成页面和操作的处理中运行单线程。有一些方法可以让它看起来像不是这样,并且像使用html5中引入的web worker的伪多线程一样独立运行javascript进程。伪我的意思是它像大多数多线程进程一样工作,它在时钟中断之间切换得如此之快,好像它是多线程的。有关网络工作者的更多信息可以在http://www.w3schools.com/html/html5_webworkers.asp以及Google当然找到。

相关问题