javascript - ChromeWorker 设置指向内存的指针或发送大数据。如何?

标签 javascript firefox firefox-addon firefox-addon-sdk

我们尝试通过 ChromeWoker 发送 500kb 并在控制台中出现内存不足错误。

这段代码:

let charArray= ctypes.ArrayType(ctypes.char);
let base641 = new charArray(9999999);

var {ChromeWorker} = Cu.import("resource://gre/modules/Services.jsm", null);
var chworker = new ChromeWorker(self.data.url("async.js"));

chworker.onmessage = function(e){
  console.error(e.data);
};

chworker.postMessage(base641);

返回错误:

stack:"@undefined:undefined:undefined
CuddlefishLoader/options<.load@resource://gre/modules/commonjs/sdk/loader/cuddlefish.js:129:9
run@resource://gre/modules/commonjs/sdk/addon/runner.js:169:9
startup/<@resource://gre/modules/commonjs/sdk/addon/runner.js:113:7
Handler.prototype.process@resource://gre/modules/Promise-backend.js:863:11
this.PromiseWalker.walkerLoop@resource://gre/modules/Promise-backend.js:742:7"

什么是未定义的?我们可以通过 ChromeWorker 设置指向内存的指针吗?

最佳答案

要传递 ctypes 数组,您需要获取 address() 并将其发布到消息中,并从另一端的该地址构造另一个指针。这当然有效,但相当讨厌。您还需要确保垃圾收集不会在另一端仍在使用它时收集东西!

您可能最好使用 ArrayBuffer/typed 数组,您可以 pass directly ,也来自非特权代码。

关于javascript - ChromeWorker 设置指向内存的指针或发送大数据。如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23911536/

相关文章:

java - 45000 毫秒后无法连接到端口 7055 上的主机 127.0.0.1。使用 FF 版本 26.0 和 selenium 独立 jar 2.39

html - Firefox 文本比 chrome 和 ie 低 1px

javascript - 如何针对 URL 字符串测试 URL 匹配模式

javascript - 火狐插件 : quit-application observer not working

javascript - 如何使用 reactjs 使用 scrollintoview 方法将列表项滚动到 View 中?

javascript - 如何为浏览器客户端设置 RabbitMQ 绑定(bind)?

javascript - PHP使用复选框从数据表中删除多行

css - Firefox 不支持 font-face

调试类似油脂猴的脚本

javascript - 资源类操作或资源 promise 的成功回调,哪个是第一个?