为什么Javascript没有任何线程?

时间:2014-03-01 17:25:11

标签: java javascript multithreading swing

我已经使用Java Swing好了6年,而线程模型是GUI响应的核心原则。

我的问题是,javascript应用程序如何处理具有用户事件的响应式应用程序,异步后端调用,而没有线程?

这都是由浏览器管理的吗? IE浏览器。浏览器是否管理类似于事件调度线程的东西?

1 个答案:

答案 0 :(得分:1)

  

由于JavaScript,JavaScript一次只能执行一个代码块   单线程性质,这些执行单元中的每一个都是阻塞的   其他异步事件的进度。这意味着当一个   发生异步事件(如鼠标单击,计时器触发,甚至   完成一个XMLH ttpRequest),它排队等候   当线程下一次释放时执行。这实际上是如何排队的   发生因浏览器而异,因此请考虑这是一个   简化,但一个足够接近我们理解的   概念。消除所有这一切的重要概念是,   因为JavaScript是单线程的,所以只有一个执行单元可以   永远在特定的时间运行,我们永远无法确定   计时器处理程序将在我们期望的时间执行。

例如,如果我们有以下脚本

alert("something");

setInterval(function(){
    alert("TIME");
},2000);

我们继续alert超过2秒(在setInterval函数中指定),执行操作将排队并在alert释放后执行

注意:由于JavaScript中的单线程,我们无法完全依赖setTimeoutsetInterval函数