2011-08-06 50 views
5

我想模擬使用iframe的多線程,但我遇到了一種情況,我不知道它是否實際上自己使用iframe進程(線程)。例如,如果我調用放置在iframe中的方法,它是使用由iframe創建的線程運行,還是使用主父窗口線程運行?使用iframe的多線程

如果是後者,那麼是可以改變的範圍,使得在iframe調用方法(使得程序使用一個不同的線程從該父窗口的)

編輯: 也許我應該已經更清楚了,但我不想使用WebWorkers,因爲我沒有訪問DOM元素。

回答

4

如果你想運行一些後臺任務,只需使用WebWorkers

通常你不需要多線程js代碼。您應該使用事件循環。

+0

我同意事件循環,線程不增加處理能力,它們只是分割代碼執行的手段。谷歌如何使用node.js來理解線程事件的威力。 –

+0

@KevinHakanson是的,我同意。但線程的主要用途是在後臺運行大量計算。你不能將事件循環用於長時間運行的計算,你可以將它們放在一個新的進程中。在瀏覽器中,我們無法創建流程,因此我們使用web工作人員 – Raynos

+0

我的應用程序比計算複雜一點。我希望能夠在父窗口中有多個線程處理SVG元素(縮放,平移,旋轉等)。 – fogy

1

查看MDN文檔中的Using web workers

工人接口派生實時操作系統級別的線程,可以並行,如果你不小心在你的代碼 原因有趣的效果。但是,在網絡工作者情況下,仔細控制的通信點 與其他線程的點意味着它實際上很難導致併發問題。無法訪問非線程安全組件 或DOM,您必須通過序列化對象將特定數據傳入和傳出線程 。所以你必須非常努力地在代碼中導致 問題。

John Resig在2009年寫了Computing with JavaScript Web Workers n關於這個話題。但是,根據When can I use,在IE10之前沒有IE支持,因此可能無法滿足您的需求。