我有一个包含不同列和行的 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/