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');

更多参考:

相关链接