javascript - HTML5 Webworkers - 所有一个文件

标签 javascript multithreading html web-worker

目前我有以下代码:

这是在我的 HTML 文档中。

<script language="JavaScript" type="text/javascript" src="workerTest.js"></script>

现在根据我的理解和研究, worker 必须来自外部文件。

所以在我的 workerTest.js 中我有

var iWorker = new Worker('workerTest.js');

我更愿意在我的 workerTest.js 中声明我所有的作品和代码,并且能够根据我从外部文件创建它们的行。

有点像

var iWorker2 = new Worker('scripttagid');

显然上面的代码是错误的,但我希望它能说明我的观点。

这可能吗?如果可以,有人可以指出我正确的方向吗?可能是一些示例代码?

如果这不可能,那么避免大量工作文件的最佳方法是什么。因为会有很多作品。

最佳答案

好吧,有点:

<!-- won't be executed by browser because of the invalid type -->
<script type="text/worker" id="worker-code">
while(true) {

}
</script>

Javascript:

var workerCode = document.getElementById("worker-code").innerHTML;
//Could also just be var workerCode = 'while(true){}';

var BlobBuilder = window.WebKitBlobBuilder || window.MozBlobBuilder || window.OBlobBuilder || window.BlobBuilder,
    blobBuilder = new BlobBuilder(),
    URL = window.webkitURL || window.URL,
    blob, workerURL;

blobBuilder.append(workerCode);
blob = blobBuilder.getBlob("text/javascript");

workerURL = URL.createObjectURL( blob );
var iWorker = new Worker(workerURL);

请注意,您也不需要该元素,只是将代码存储在像 'while(true){}' 这样的字符串中很难维护。

演示:http://jsfiddle.net/pmSSf/ (处理器使用率会激增,但您可以使用该页面,因为它不在 UI 线程中运行)

关于javascript - HTML5 Webworkers - 所有一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11728829/

相关文章:

java - 在面板中显示 ArrayList

javascript - 使用 jQuery 将类添加到表格行

java - 当用户按下后退按钮时停止线程

javascript - 使用 JavaScript 搜索元素

html - 我如何将背景图像应用于低 div

html - Div 对齐问题

javascript - 从漂浮物上剪下过多的痕迹

javascript - 使用 JavaScript 进行 HTML 字段表单验证

android - 在单独的线程中运行计算

python - 如何向正在运行的线程添加事件?