尝试在 Web Worker 中新建 'Audio' 对象时出现 ReferenceError

ReferenceError when trying to new up 'Audio' object within web worker

function buildBlobUrl(func) {
  let blobUrl = URL.createObjectURL(new Blob(['(',
    func.toString(),
    ')()'
  ], {
    type: 'application/javascript'
  }));
  return blobUrl;
}

function webWorkerFunction() {
  let audio = new Audio();
}

let blobUrl = buildBlobUrl(webWorkerFunction);
let webWorker = new Worker(blobUrl);

如果我运行上面的代码,我会得到一个错误Uncaught ReferenceError: Audio is not defined。无论如何,我可以在我的网络工作者功能中使用 Audio 对象吗?

没有,

Audio 构造函数执行 return 一个 HTMLAudioElement DOM 元素,而 Web Worker 无权访问 DOM,因此我们可以从那里创建 DOM 元素。
而且由于我们仍然无法在 Worker 中真正拥有 BaseAudioContext,因此除了 100% 从 Worker 播放此媒体之外没有真正的替代方法。