有没有办法看到JavaScript正在创建的“线程”?例如,如果我有一个附加到DOM元素的事件处理程序,我假设JavaScript将隐式地创建一个新线程在后台运行该代码?如果是这样,有没有办法看到(例如通过Firebug,WebKit检查器等)JavaScript打开的不同“线程”? (如果它不是JavaScript正在使用的线程,那么事件处理程序如何在“幕后”工作?)
答案 0 :(得分:4)
JavaScript不会创建线程。底层浏览器可能在其自己的线程环境中处理事件,然后导致JavaScript解释器运行处理程序,但JavaScript中没有线程访问,浏览器的工作方式是特定于实现的。
答案 1 :(得分:2)
JavaScript不会创建新线程,它会在浏览器中运行。你无法真正看到这些信息。您可以使用分析器,但我不确定是否可以回答您的问题
答案 2 :(得分:0)
使用此工具,看看它是否达到了您想要的效果:Visual Event
答案 3 :(得分:0)
JavaScript是“单线程”,所有执行都是线性的(尽管我们不知道底层引擎是如何工作的。)
异步操作是基于事件的(DOM事件,Ajax调用,WebWorkers),因此其处理程序的执行会附加到调度程序队列 - 它们只会在当前执行完成时执行。这就是无法从外部停止无限循环的原因 - 它们只会冻结浏览器(并最终抛出long-running script
异常)。
与超时(W3 Timer
spec)相同,它们在活动计时器列表中添加任务。您可以在processing model spec for Web-App API中阅读有关此类任务队列的更多信息。