尝试在 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 播放此媒体之外没有真正的替代方法。
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 播放此媒体之外没有真正的替代方法。