ChromeWorker - 可以使用 js-ctypes 来运行本机代码的 worker
非标准
该功能是非标准的。请尽量不要在生产环境中使用它:因为每个用户不一定会正常运行。它的实现可能存在很大的不兼容性,并且将来可能会改变行为。
概要
如果您正在开发有特殊权限的代码,并且想要创建一个可以使用 js-ctypes 来运行本机代码 worker,则可以通过使用 ChromeWorker
,而不是标准 Worker
对象。它的工作原理与标准 Worker
完全相同,不同的是它可以通过全局范围的 worker 的可用全局 ctypes
对象来访问 js-ctypes。在 Github 上有使用 js-ctypes 的 ChromeWorker 示例可,可以在下面的相关链接找到。要将 postMessage 与具有 promises 功能的 ChromeWorker 的回调版本一起使用,请参阅 PromiseWorker。
插件必须使用绝对 URL 来加载它们的 workers,并且这些 URL 必须使用 chrome://
或 resource://
协议(不支持 file://
。)希望使用 file://
的 URL 必须首先注册资源替换路径,使用如下代码:
var fileuri = Services.io.newFileURI(file);
Services.io.getProtocolHandler('resource').
QueryInterface(Ci.nsIResProtocolHandler).
setSubstitution('my-cool-addon', fileuri);
var worker = new Worker('resource://my-cool-addon/worker.js');
更多参考:
- 您可以使用 JavaScript 代码模块中的
ChromeWorker
。有关详细信息,请参阅在 JavaScript 代码模块中使用 workers - 您可以在
ChromeWorker
中使用 ChromeWorker 模块。 - 有关示例和详细信息,请参阅使用 Web worker。
相关链接
- 使用 web workers
- 在 JavaScript 代码模块中使用 worker
Worker
SharedWorker
- Web Workers 规范
WorkerGlobalScope
- GitHub :: ChromeWorker - 一个完全工作的演示插件,使用来自 chrome worker 的 js-ctypes。使用 WinAPI 示例。
-
PromiseWorker
- GitHub :: PromiseWorker - 演示如何使用 promises 作为 ChromeWorker 的 postMessage 功能