reactjs - 并行处理的 Reactjs 加载时间
问题描述
我们正在使用 ReactJS 开发一个解决方案,基于 excel 用于计算某些值并将它们显示在具有行和列的网格单元格中。每个单元格都有特定的公式,该公式可能取决于其他单元格来计算其值。
E.g. Cell A = Cell D + Cell Q,
Cell D = Cell P + Cell K
等等等等。
随着单元格数量的增加,网格的加载时间呈指数增长。我试图找到一些方法可以通过并行运行来减少加载时间。示例:第一个 x 组单元格可以在一个线程上运行,其他 x 组可以在另一个线程上运行,然后我可以将它们绑定在一起。
或者,如果有任何其他方式我可以做到这一点。
解决方案
在浏览器中运行此类算法将极大地限制您的选择。我最初的猜测是在web worker池中运行任务以避免阻塞主线程而不是冻结 UI。
对于技术实现,我建议查看本教程:2018 年开始在 React 中使用 Web Worker 的介绍。
基本示例:
worker.js
export default () => {
self.addEventListener('message', e => {
if (!e) return;
let result;
// Run your algorithm
postMessage(result);
})
}
反应组件
import worker from './worker.js';
componentDidMount = () => {
this.worker = new WebWorker(worker);
};
onClickAction = () => {
this.worker.postMessage('Perform actions');
this.worker.addEventListener('message', event => {
this.setState({
results: event.data.results
})
});
}
}
推荐阅读
- ajax - 为什么 ajax 请求 POST 数据不能通过(在 cakePHP 中)?
- apache-spark - Spark groupby 多列分别
- mockito - 是否可以在不添加新方法进行验证的情况下对 onSubscribe 中发生的在 onComplete/onError 中撤消的列表添加/删除进行单元测试?
- r - dplyr NSE:在数据框中居中多列
- python - 将函数或类实例传递给 multiprocessing.Process 的“目标”参数是否安全,没有密集复制的风险?
- python - 创建一个字符串,列出查询集中对象类型的数量
- java - 我如何在java中使字符串居中
- javascript - 向特定用户或设备推送通知
- python - Python国际象棋验证移动
- javascript - 循环对象数组以返回正确的结果