javascript web worker发布消息

时间:2017-01-15 05:27:32

标签: javascript arrays json node.js web-worker

我对我的脚本进行了严格的处理,所以为了不阻止用户界面并避免浏览器处理上限(Chrome上的12.5),我已经尝试了网络工作者

问题是对象太大而且包含数组 所以帖子消息不会随着投掷而转移 "无法执行' postMessage' on' Worker':无法克隆对象"

所以我考虑将其字符串化,对象没有完全转移,因为它包含数组,而数组则字符串化为" []"

所以我考虑将数组转换为字符串/对象以便能够将它们传输回来但是由于对象很大,我在堆栈上耗尽内存(即使使用第三方插件)

所以我有什么遗失在这种情况下会有所帮助吗?

  • 没有更好的方法来处理耗时的功能 阻止ui并允许我报告进度;会解决 此
  • 以任何方式将对象转移到Web工作者的任何方式 对象和数组;会解决这个问题

debugging picture of the problem

the sub object that isn't stringified

1 个答案:

答案 0 :(得分:0)

如果您执行以下操作,是否正确地重新创建了对象?

在主线上:

var worker = new Worker('myworkerfile.js')
worker.postMessage(JSON.stringify(myclusters))

在工作线程上:

onmessage =  function(e) {
  var myclusters = JSON.parse(e.data);
  console.log(myclusters)
}