2012-06-13 78 views
0

當我使用javascript創建網站時,我是否有機會利用客戶端計算機上的多個線程?是否有多線程的Web編程?

我知道web編程可以讓你訪問多個異步http或網絡請求。我想知道實際的瀏覽器內處理。

+0

工作有node.js的上一看(http://nodejs.org/)和彗星(HTTP:// EN。 wikipedia.org/wiki/Comet_%28programming%29)。 – powtac

+1

根據你的實際意思 - http://en.wikipedia.org/wiki/Web_worker – zerkms

+3

網絡工作者http://www.html5rocks.com/en/tutorials/workers/basics/ – SRN

回答

3

Web Workers is the way to go ... 它是一種HTML 5功能,它允許在客戶端上運行多個線程(工作者)。該功能目前是一個工作草案。

您可以爲頁面啓動任意數量的工作人員,並且每個工作人員可以將他們的狀態或結果「發佈」到主線程。

有這個MDN後https://developer.mozilla.org/En/Using_web_workers

偷看此外,張貼SRN的聯繫也是非常有用的(http://www.html5rocks.com/en/tutorials/workers/basics/

而且記住,瀏覽器的支持仍然不好。 http://caniuse.com/webworkers

最好你有一個後退方法,以防止你打不支持的瀏覽器。另外請注意,Chrome曾經有一個錯誤,即網絡工作者可以實際掛起Chrome用戶界面。可能現在已經修好了,但是請注意。

3

有些事情叫做「WebWorkers」,它們提供某種程度的併發性。它們通過消息傳遞範式類似Erlang進程與「普通」代碼進行交互操作(雖然幾乎沒有那麼複雜)。

這是一個新的HTML5的東西,當然在舊版瀏覽器中不支持。

+0

它會在Chrome和最新的FireFox? – JDS

+0

@YoungMoney yes - 檢查這些東西[這裏](http://caniuse.com) – Pointy

2

Web Workers是該技術。

Web工作者 - 由萬維網聯盟(W3C)和Web超文本應用技術工作組(WHATWG)定義 - 是一個JavaScript腳本 - 從HTML頁面執行 - 在後臺運行,獨立,可能也已經從相同的HTML頁面執行的其他用戶界面腳本

查看usage on MDN太:

專用Web工人提供網頁的簡單方法內容在後臺運行腳本線程。創建完成後,工作人員可以通過將消息發佈到創建者指定的事件處理程序,將消息發送到產卵任務。

1

有多線程的網絡編程,但沒有多線程的JavaScript。

當JavaScript在客戶端的瀏覽器中執行時,它將逐行解釋,並且在執行時不會呈現任何內容。

你可以利用開源庫來「模仿」多線程,但基本上每個JavaScript都需要一個頁面來存活和運行。

一些技巧是傳遞長時間運行的函數在iframe中運行,或者使用setTimeout函數一次執行50毫秒的某些工作,直到用於跟蹤工作的某個標記表示工作完成像isFinished == true

最新版本的Flash播放器允許使用多線程,但它僅限於跨單個域的非常基本的用法。

HTML 5網絡工作者是另一種選擇,但不會在所有瀏覽器