【发布时间】:2017-01-15 20:57:07
【问题描述】:
我的脚本正在紧张处理,所以为了不阻塞 UI 并避免浏览器处理上限(chrome 上为 12.5),我尝试了 web worker
问题是对象太大并且包含数组 所以帖子消息不会通过投掷来传输 "在 'Worker' 上执行 'postMessage' 失败:无法克隆对象"
所以我考虑对其进行字符串化,对象没有完全转移,因为它包含数组,以及字符串化为“[]”的数组
所以我考虑将数组转换为字符串/对象以便能够将它们传输回来,但由于对象很大,我的堆栈内存不足(即使使用第三方插件)
那么在这种情况下我缺少什么可以帮助的吗?
- 任何更好的方法来处理耗时的功能,而无需 阻止用户界面并允许我报告进度;会解决 这个
- 任何将对象转移到网络工作者的方法 对象和数组;会解决这个问题
【问题讨论】:
-
object wasn't fully transferred as it contains arrays, and arrays where stringified to "[]"这听起来像是对结果的误解......数组很容易被字符串化......你能解释一下你正在尝试使用什么样的对象 - 你能解释一下为什么你'当问题明显与浏览器相关时,我标记了node.js -
嗯,它是我的主对象中的一个对象数组,它不会对其进行字符串化(在 chrome 开发工具上调试,对象已完全填充,并且在 json 字符串化调用后它没有完全字符串化)
-
debugged on chrome dev tools不要总是相信您在控制台中看到的内容 - 如果 JSON.stringify 没有抛出错误,那么您几乎可以肯定它有效 -
你仍然没有解释你正在处理的对象是什么类型 - 如果它包含 DOM 元素,那么
JSON.stringify不会给你整个 enchilada -
我在使用 chrome 开发工具调试时添加了一张图片
标签: javascript arrays json node.js web-worker