不使用額外的js檔案建立 web workers

2021-09-22 23:44:34 字數 1036 閱讀 9574

web workers 需要將要執行的**,定義為單獨的js,然後通過以下方式來引用

new worker('some/path/process.js')
但是,當工程本身需要將所有的**進行編譯並合併成乙個檔案時,這種單獨的js的方式,就還需要一些特殊處理。

或者,當頁面就是乙個單獨的html,不希望引用額外的js檔案時,web workers本身的初始化方式都會有些不方便。

根據 worker 的 api,可以基於 blobs 構建 worker 例項。

目前,沒有什麼官方指導的方式,可以通過script標籤來定義要執行的**:

var myworker = null,

var workerdata = new blob([document.getelementbyid('myworker').textcontent], );

function init() ;

}init();

這樣,就可以把worker執行的**,巢狀在當前的頁面中,而不用單獨的js檔案。

更進一步方便,還可以再避免定義單獨的script標籤,直接將function轉換為blob的方式,如下:

function fn2workerurl(fn)
修改開始的例子,就可以按以下方式來寫:

var myworker = null;

var myworker = function() , 1000);

}var workerdata = new blob(['(' + myworker.tostring() + ')()'], );

function init()

myworker = new worker(window.url.createobjecturl(workerdata));

myworker.onmessage = function (e) ;

}init();

不使用匯入js檔案

方法一 原生 adc.js var hello h9 html.html 方法二 jquery.js getscript abc.js function 方法三 require.js 訪問密碼 ea9b require.js分享2.1.1版本 index.html main.js console.l...

不使用資源檔案動態建立對話方塊的做法

一般而言,在 windows程式設計中建立對話方塊需要先定義乙個對話方塊資源。我想能不能不用資源檔案單純通過 建立對話方塊呢?晚上搜尋了一些資料,研究了一下,基本實現了。我寫了乙個kdialog,如下 中有一些注釋,相信大家能基本看懂 標頭檔案的 cpp view plain copy font s...

不使用額外空間,將 A,B兩鍊錶的元素交叉歸併

includeusing namespace std typedef struct node list void print list list cout endl void merge list list1,list list2 int main for int i 99 i 0 i 2 prin...