我听了Crockford关于Javascript(2006)的旧讲座,他正在谈论模型
Flow -> Paint
^ |
| v
Script <- Event
(一个涉及Flow,paint,event,script ......的循环),说“因为所有浏览器都是单线程的”。
所以,我的问题是,他们还是单线程吗?
对于那些可能知道的人来说,这些视频讲座是否仍然与所教授的内容相关?
答案 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当然找到。