首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Javascript -如何将jQuery对象(表)传递给web worker?

Javascript -如何将jQuery对象(表)传递给web worker?
EN

Stack Overflow用户
提问于 2015-04-29 23:04:55
回答 2查看 880关注 0票数 0

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

计算总和的函数在主脚本中,并且花费了大量时间使浏览器没有响应。为了解决这个性能问题,我在JavaScript中创建了一个web worker来计算表上的总和。

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

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

未捕获DataCloneError:无法对‘Worker’执行'postMessage‘:无法克隆对象。

如何将表传递给Web Worker?

谢谢

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

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

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

EN

回答 2

Stack Overflow用户

发布于 2015-04-29 23:47:43

简而言之,您不能将DOM元素传递给worker。只有数据,通常是字符串,才能传递给webworkers,而不是对象。您应该从表中提取数据,将其包装在一个对象中,将对象转换为json,将json发送给worker,对其进行处理,然后将一些json返回给主线程。

票数 2
EN

Stack Overflow用户

发布于 2018-10-20 05:12:06

您可以这样做,记住您可以将字符串或数字作为对象进行传递。然后循环遍历数字并继续接收字符串。然后使用table.innerHTML对其进行更改。

代码语言:javascript
复制
const row = '<tr></tr>';
const worker = new Worker('worker.js');

worker.postmessage({'row': row});

worker.onmessage = function(e){

 const result = e.data.result;
 //do something

 };

worker.terminate();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29947630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档