JavaScript "ReferenceError: Can't find variable: Worker" in Safari when creating a Web Worker
JavaScript "ReferenceError: Can't find variable: Worker" in Safari when creating a Web Worker
我在我的 JavaScript 代码中使用了 Web Worker,我使用该 Worker 的 class 如下所示:
class EnemyMoveCalculater {
constructor() {
this.worker = null;
}
startMoveCalculation(boardData, nextPlayer, jokerReady, enemyMoveHandlerCallback) {
this.worker = new Worker('js/calculateEnemyMoves.js');
this.worker.onmessage = function(e) {
this.worker.terminate();
this.worker = null;
enemyMoveHandlerCallback(e.data);
}.bind(this);
this.worker.postMessage([boardData, nextPlayer, jokerReady]);
}
terminateMoveCalculation() {
if (this.worker) this.worker.terminate();
}
}
我的网站在 Firefox(Windows 和 Android)、Edge 和 Samsung Internet Browser 中运行。但是,当“startMoveCalculation”在 Safari(版本 12.1.2)中运行时,出现以下错误:
ReferenceError: Can't find variable: Worker
可能是什么问题?
不幸的是,Safari 目前不支持从其他 Web Worker 中生成 Web Worker。在这种情况下,Worker 可能必须请求主线程生成另一个 worker 并管理 worker 之间的通信。
Chrome 似乎将 Safari / WebKit 关闭为“无信号”提供此功能:
https://www.chromestatus.com/feature/6080438103703552
要遵循的 WebKit 错误:
我在我的 JavaScript 代码中使用了 Web Worker,我使用该 Worker 的 class 如下所示:
class EnemyMoveCalculater {
constructor() {
this.worker = null;
}
startMoveCalculation(boardData, nextPlayer, jokerReady, enemyMoveHandlerCallback) {
this.worker = new Worker('js/calculateEnemyMoves.js');
this.worker.onmessage = function(e) {
this.worker.terminate();
this.worker = null;
enemyMoveHandlerCallback(e.data);
}.bind(this);
this.worker.postMessage([boardData, nextPlayer, jokerReady]);
}
terminateMoveCalculation() {
if (this.worker) this.worker.terminate();
}
}
我的网站在 Firefox(Windows 和 Android)、Edge 和 Samsung Internet Browser 中运行。但是,当“startMoveCalculation”在 Safari(版本 12.1.2)中运行时,出现以下错误:
ReferenceError: Can't find variable: Worker
可能是什么问题?
不幸的是,Safari 目前不支持从其他 Web Worker 中生成 Web Worker。在这种情况下,Worker 可能必须请求主线程生成另一个 worker 并管理 worker 之间的通信。
Chrome 似乎将 Safari / WebKit 关闭为“无信号”提供此功能:
https://www.chromestatus.com/feature/6080438103703552
要遵循的 WebKit 错误: