【发布时间】:2015-10-17 16:31:25
【问题描述】:
在 javascript 时间线的执行阶段,会发生异步调用已注册事件处理程序的事件。根据我在异步调用方面的知识,程序执行不会等待任务完成,而是移动到下一个任务。 那么谁能解释一下javascript如何处理注册到单个事件的2个事件处理函数的异步执行?
For eg:
window.addEventListener("load",function(){console.log("onload event 1 called!");},false);
window.addEventListener("load",function(){console.log("onload event 2 called!");},false);
javascript解释器是否只是调用第一个事件处理程序并转移到第二个事件处理程序,而第一个事件处理程序的执行部分由另一个线程执行?
我已经读到 javascript 遵循单线程模型,那么它如何适应?
【问题讨论】:
-
异步≠并行,这只是意味着你不会阻塞其余的应用程序,直到发生某些事情。此外,DOM 事件循环是在某种程度上阻塞:当一个事件触发时,所有的侦听器都会在其他任何事情发生之前被调用(特别是在任何其他事件可以被触发之前)。
标签: javascript asynchronous single-threaded