有沒有辦法看到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