我已经使用Java Swing好了6年,而线程模型是GUI响应的核心原则。
我的问题是,javascript应用程序如何处理具有用户事件的响应式应用程序,异步后端调用,而没有线程?
这都是由浏览器管理的吗? IE浏览器。浏览器是否管理类似于事件调度线程的东西?
答案 0 :(得分:1)
由于JavaScript,JavaScript一次只能执行一个代码块 单线程性质,这些执行单元中的每一个都是阻塞的 其他异步事件的进度。这意味着当一个 发生异步事件(如鼠标单击,计时器触发,甚至 完成一个XMLH ttpRequest),它排队等候 当线程下一次释放时执行。这实际上是如何排队的 发生因浏览器而异,因此请考虑这是一个 简化,但一个足够接近我们理解的 概念。消除所有这一切的重要概念是, 因为JavaScript是单线程的,所以只有一个执行单元可以 永远在特定的时间运行,我们永远无法确定 计时器处理程序将在我们期望的时间执行。
例如,如果我们有以下脚本
alert("something");
setInterval(function(){
alert("TIME");
},2000);
我们继续alert
超过2秒(在setInterval函数中指定),执行操作将排队并在alert
释放后执行
注意:由于JavaScript中的单线程,我们无法完全依赖setTimeout
和setInterval
函数