位置:首頁(yè) > 軟件操作教程 > 編程開(kāi)發(fā) > HTML > 問(wèn)題詳情

HTML5 Web Workers簡(jiǎn)介

提問(wèn)人:劉團(tuán)圓發(fā)布時(shí)間:2020-11-17

    —個(gè)worker是一個(gè)使用構(gòu)造函數(shù)(如Worker())來(lái)創(chuàng)建的對(duì)象,在一個(gè)命名的JS文件里面運(yùn)行,這個(gè)文件包含了在worker線程中運(yùn)行的代碼。Workers不同于現(xiàn)在的window,是在另一個(gè)全局上下文中運(yùn)行的。在專(zhuān)用的Workers例子中,是由DedicatedWorkerGlobalScope對(duì)象代表這個(gè)上下文環(huán)境。標(biāo)準(zhǔn)Workers是由單個(gè)腳本使用的,共享Workers使用的是SharedWorkerGlobalScope。

    在worker線程里面,可以運(yùn)行任何你喜歡的代碼,當(dāng)然也有一些例外。例如,不能直接操作worker里面的DOM,也不能使用window對(duì)象的一些默認(rèn)方法和屬性。但是,可以使用window下許多可用的項(xiàng)目,包括WebSockets、類(lèi)似IndexedDB和Firefox OS獨(dú)有的Data Store API這樣的數(shù)據(jù)存儲(chǔ)機(jī)制。

    在HTML5中,創(chuàng)建后臺(tái)線程的步驟十分簡(jiǎn)單,只需要在Worker類(lèi)的構(gòu)造器中,將需要在后臺(tái)線程中執(zhí)行主腳本文件的URL地址作為參數(shù),然后創(chuàng)建Worker對(duì)象就可以了,代碼如下:

    var Worker = Worket("Worker.js");

    在后臺(tái)線程中是不能訪問(wèn)頁(yè)面或窗口對(duì)象的。如果在后臺(tái)線程的腳本文件中使用window對(duì)象或 document對(duì)象,則會(huì)引起錯(cuò)誤的發(fā)生。

    使用Worker對(duì)象的Message方?jīng)i來(lái)對(duì)后臺(tái)線程發(fā)送消息,如下面代碼所示:

    Worker.postMessage(message);

    在上述代碼中,發(fā)送的消息是文本數(shù)據(jù),但也可以是任何JavaScript對(duì)象(需要通過(guò)JSON對(duì)象的stingoify方法將其轉(zhuǎn)換成文本數(shù)據(jù))。

    另外,可以通過(guò)獲取Worker對(duì)象的onmessage事件句柄及Worker對(duì)象的postMessage方法,在后臺(tái)線程內(nèi)部進(jìn)行消息的接收和發(fā)送。

繼續(xù)查找其他問(wèn)題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部