2012-07-26 101 views
0

可能重複:
JavaScript multithreading是否有可能與多線程執行JavaScript功能

當我在瀏覽器中打開一個網頁,有多少線程開始呈現DOM並執行Javascript代碼?

是否可以使用多線程執行Javascript函數?

+0

可能重複的[JavaScript多線程](http://stackoverflow.com/questions/7639224/javascript-multithreading),http://stackoverflow.com/questions/2145829,http://stackoverflow.com/questions/ 39879,http://stackoverflow.com/questions/2734025 ... – 2012-07-26 12:16:59

回答

0

簡短的回答是否定的,你不能在javascript中運行多線程代碼。

較長的答案是,你可以模擬它。 SO上的這個問題可能會有幫助:Multithreaded JavaScript how to?

+1

...除非您在現代瀏覽器中使用網絡工作者。 – Pointy 2012-07-26 12:18:49

+0

我知道,我正在向我的回答中添加:) – entropy 2012-07-26 12:19:53

0

Javascript代碼在單個線程中運行。 你不能開始單獨的線程,但你仍然可以使用異步函數來實現像setTimeOut和setInterval。

0

通常只有一個UI線程,但是您可以在HTML5中與WebWorkers並行運行JS。

0

您可以將WebWorkers用於線程,但它不能與dom一起使用。你也可以嘗試通過setInterval

+0

調用webworker的腳本可以使用DOM! – 2012-07-27 16:16:07

0

,人們有時用另一種想法是讓使用iframe。如果您的應用程序可以建模爲一組iframe(如Facebook),則可以利用此功能。谷歌瀏覽器爲此進行了高度優化。每個框架中的Javascript都在獨立的執行環境中執行,因此可以並行化。

+0

其他瀏覽器如IE,firefox,safari如何?是否提供iframe的優化? – Jeffrey 2012-07-27 04:50:36

+0

是的。每個瀏覽器都在單獨的執行上下文中並行運行每個iframe中的javascript。這是一種非常流行的技術。缺點是瀏覽器必須發出多個HTTP請求,每個幀有x個。通過這些更多的iframes提供的優化:http://www.aaronpeters.nl/blog/iframe-loading-techniques-performance – 2012-07-28 06:01:13