Javascript 如何从Web Worker下载文件?

Javascript 如何从Web Worker下载文件?,javascript,angular,web-worker,js-xlsx,Javascript,Angular,Web Worker,Js Xlsx,在项目中(在Angular4.3上编写),我们使用创建xlsx/csv表供用户下载。我们面临的问题是,当我们尝试导出大量数据时,原始json文件可以是100+Mb,转换的xlsx/csv文件可以是28Mb,所有这些转换操作都在客户端处理,它使用了主线程上的所有资源。我尝试添加web wroker以将所有进程移动到另一个线程,当尝试从wroker下载创建的文件时,我收到一个错误: export.worker.bundle.js:2未捕获错误:无法保存文件test.xlsx 单击添加工作程序的示例代

在项目中(在Angular4.3上编写),我们使用创建xlsx/csv表供用户下载。我们面临的问题是,当我们尝试导出大量数据时,原始json文件可以是100+Mb,转换的xlsx/csv文件可以是28Mb,所有这些转换操作都在客户端处理,它使用了主线程上的所有资源。我尝试添加web wroker以将所有进程移动到另一个线程,当尝试从wroker下载创建的文件时,我收到一个错误:

export.worker.bundle.js:2未捕获错误:无法保存文件test.xlsx

单击添加工作程序的示例代码:

btn.addEventListener('click', (e) => {
  const worker = new Worker('./export.worker.bundle.js');
  const payload = {
   data: [
   { name: 'Moran', role: 'back' },
   { name: 'Alain', role: 'front' },
   { name: 'Tony', role: 'back' },
   { name: 'Mike', role: 'back' },
   { name: 'Abo', role: 'back' },
   { name: 'Toni', role: 'back' }
   ]
  };
  worker.postMessage(payload);
  worker.onmessage = (e) => {
  console.log(e.data);
  // worker.terminate();
  };
 });
工人代码:

(function() {
 const XLSX = require('xlsx');
 const utils = require('xlsx').utils;
 const self = this;

 self.onmessage = function(e) {
   console.log('Worker data: ', e.data);
   const fileName = 'test.xlsx';

   const ws = XLSX.utils.json_to_sheet(e.data.data);
   const wb = XLSX.utils.book_new();
   XLSX.utils.book_append_sheet(wb, ws, 'test');

   XLSX.writeFile(wb, fileName);
   self.postMessage('Process complete!');
 };
})();
writeFile(wb,filename,write_opts)尝试将wb写入文件名。在基于浏览器的环境中,它将尝试强制客户端下载

这一行XLSX.writeFile试图启动下载,但失败了,而且据我所知,该操作占用了线程中的所有资源

是否可以从worker开始文件下载?或者我需要回到主线程