Javascript - 如何将 jQuery 对象(表)传递给 Web Worker?

标签 javascript jquery html dom web-worker

我有一个包含不同列和行的 HTML 表格。用户可以内联编辑该表。当用户编辑表格时,我会计算表格行上的一些总和。

计算总和的函数位于主脚本中,并且花费了大量时间导致浏览器无响应。为了解决这个性能问题,我用 JavaScript 创建了一个 Web Worker 来计算表中的总和。

问题是 Web Worker 无法访问 DOM。我正在寻找一种将 jQuery 对象表传递给 Web Worker 的方法。

如果我尝试传递 jQuery 对象,我会收到错误:

Uncaught DataCloneError: Failed to execute 'postMessage' on 'Worker': An object could not be cloned.

如何将表传递给 Web Worker?

谢谢

[编辑添加一些进一步的信息]

求和需要很长时间,因为表有很多行并计算不同的总和(总计、小计等)。求和的值存储在表中(因此工作人员需要访问表来执行计算)。

我的想法是将 DOM 对象传递给worker来计算总和。 计算完成后,worker 将总和返回到主线程,以便更新 DOM 中的值。

最佳答案

简而言之,您无法将 DOM 元素传递给工作人员。只有数据(通常为字符串)可以传递给网络 worker ,而不是对象。您应该从表中提取数据,将其包装在一个对象中,将对象转换为 json,将 json 发送给工作人员,对其进行处理并将一些 json 返回到主线程。

关于Javascript - 如何将 jQuery 对象(表)传递给 Web Worker?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29947630/

相关文章:

javascript - 在 javascript 或 c# 中从 Html 源查找重定向 URL

javascript - ChartJS 使用 AJAX 调用检索数据未呈现可视化

javascript - 使用 javascript 或 jQuery 摆脱 div 元素中的某些特定文本

javascript - 获取下拉列表项的选定文本并按新行拆分,然后使用 jQuery 显示警报结果

html - 如何将 div 下拉菜单安排在其他 div 后面,以便覆盖部分下拉边框?

php - 如何使用php显示两个日期之间的总天数

javascript - 单击菜单后使非 Bootstrap 导航栏展开

javascript - 如何向 anti :modals in Meteor 添加帮助函数

javascript - onclick 事件不会在第一次点击条件语句时触发

javascript - 在 CKEditor 中删除新行时如何防止 block 样式传播到后续 block ?