有没有办法看到JavaScript创建的“线程”?例如,如果我有一个附加到DOM元素的事件处理程序,我认为JavaScript会隐式地创建一个新线程在后台运行该代码?如果是这样,有没有办法看到(例如通过Firebug,WebKit检查器等)JavaScript已打开的不同“线程”? (如果它不是JavaScript所使用的线程,那么事件处理程序如何在“幕后”工作?)查看JavaScript正在创建的主题?
回答
JavaScript不会生成线程。底层浏览器可能是在它自己的线程环境中处理事件,然后让JavaScript解释器运行处理程序,但是JavaScript中没有线程访问,浏览器的工作方式是特定于实现的。
这意味着JavaScript事件处理程序可以在技术上'阻止'? – user1516425 2012-07-25 23:49:03
@ user1516425:是的。在事件处理程序中执行'while(true);'并在您的页面冻结时观看! :) – Ryan 2012-07-25 23:50:34
JavaScript不会创建新线程,它会在浏览器中运行。你无法真正看到这些信息。你可以使用一个分析器,但我不确定这会回答你的问题
使用该工具,看看它是否达到你想要什么:Visual Event
JavaScript是“单线程”,所有执行是线性的(尽管我们不知道如何底层引擎的工作原理)。
异步操作是基于事件的(DOM事件,Ajax调用,WebWorkers),因此它们的处理程序的执行被追加到调度程序队列 - 它们只会在当前执行完成时执行。这就是为什么无法从外部阻止无限循环的原因 - 它们只会冻结浏览器(并最终抛出异常情况long-running script
)。
这与超时(W3 Timer
spec)相同,它们在活动定时器列表中添加一个任务。您可以在processing model spec的Web-App API中阅读有关此类任务队列的更多信息。
- 1. Django创建评论查看通过主题pk
- 2. Javascript,正在查看[object HTMLInputElement]
- 3. 创建主题
- 4. 如何查看在主档案库中创建的分支
- 5. 移动查看与主题
- 6. 在magento2.1.3中创建主题
- 7. 在Sitecore7中创建主题
- 8. 创建WordPress主题:
- 9. 为Windows主题创建UI主题
- 10. 快速创建主数据库查看器的方法
- 11. 主题+动态控件创建+隐形UserControl =查看状态错误?
- 12. 创建相册查看器
- 13. 创建Mysql查看参数
- 14. Oracle创建查看期号
- 15. 创建模型查看xamarin
- 16. 创建分隔线查看无法正常显示在android
- 17. 创建wordpress主题的问题
- 18. 在javascript创建的框中设置看看相机属性
- 19. 在JavaScript中创建正则表达式的问题
- 20. 创建标准主题
- 21. 创建新主题 - 安卓
- 22. 创建一个主题
- 23. 创建果园主题
- 24. 在iPhone中动态查看创建?
- 25. 在XCode中创建PDF查看器
- 26. Dynamiclly创建在iOS中查看
- 27. 在scroll中创建标签查看
- 28. 从主键无查看(或存储过程)创建ADO.NET实体
- 29. WordPress的创建插件大多数查看帖子的问题?
- 30. 如何在woprdpress中按主题创建菜单主题?
JavaScript是单线程的。 – Bergi 2012-07-25 23:46:09