前端大文件下载被送进了ICU!如何抢救?

101 阅读1分钟

问题: 最近遇到文件下载问题,使用公司其他同事封装的方法自测发现,下载大文件时页面交互无响应,浏览器直接挂掉。

问题分析: 浏览器是单线程,为防止多线程同时操作一个DOM出现冲突。同事代码采用分片下载,下载完后一次性写到XLSX,导致阻塞。

解决思路: 可以模仿React源码思想,使用requestIdleCallback在浏览器空闲时写入,但多线程Web Worker处理会更快。我们使用Web Worker解决。

上代码:

image.png

image.png