小编Вад*_*дим的帖子

如何从Web Worker下载文件?

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

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();
  };
 });
Run Code Online (Sandbox Code Playgroud)

工人代码:

(function() {
 const XLSX = require('xlsx');
 const utils …
Run Code Online (Sandbox Code Playgroud)

javascript web-worker js-xlsx angular

5
推荐指数
0
解决办法
1823
查看次数

为什么恢复后 Safari 中的 Web Audio 中的状态可能无效?

我有一个代码可以播放从 S3 下载的音频文件。在页面上,用户会看到带有图片和单词的旋转木马,他应该发音并听到正确发音的音频。问题出在 Safari 中,它会在窗口加载时阻止音频文件的自动播放。我知道默认情况下 Safari 会阻止自动播放,并在设置Auto-Play: Stop Media with Sound is enabled。当我进入页面时,Safari 阻止音频文件的自动播放,页面停止加载,并且“freez”AudioContext 状态为“暂停”,如果在任何用户操作单击文档时调用 resume(),例如,状态更改为“正在运行” ',但如果我点击下一张幻灯片,下一个函数将调用source.stop()如果音频正在播放,则停止音频播放,源是一个bufferSource(AudioContext.createBufferSource())并且它抛出错误'InvalidStateError' 屏幕截图错误

为什么会出现这个错误?如果状态处于“正在运行”而不是“暂停”。在课程中还存在3个按钮再次播放音频,录制音频和播放录制的音频并在恢复所有工作后,但是当停止功能调用时显示错误。

javascript safari audio web-audio-api

4
推荐指数
1
解决办法
3930
查看次数