2012-09-25 41 views

回答

0

瀏覽器只會在一個線程中運行Javascript(至少每個域,除Web Worker以外)。
這主要是爲了簡單;直到最近,沒有人爲Javascript編寫線程API。

爲了使瀏覽器更易於編寫(以及更快速),該線程是瀏覽器UI線程。因此,Javascript中的任何同步工作(或睡眠呼叫)都會凍結瀏覽器。
這就是爲什麼同步操作非常令人沮喪的原因。

+0

每個*頁*一個線程,而不是每個域。 – josh3736

+0

@ josh3736:這不一定是真的。如果你調用'window.open()',新窗口必須共享你的UI線程。 – SLaks

+0

[That's true](http://jsfiddle.net/josh3736/V2FTT/),但僅僅是因爲JS允許打開窗口保留對打開窗口內部的引用(因此必須共享一個線程)。 **打開的頁面所在的域名無關緊要。**另外,如果您在兩個窗口中打開兩個小提琴副本並阻止其中一個,另一個不受影響(即使它們位於同一個域中)。 – josh3736

相關問題