JavaScript "ReferenceError: Can' t 查找变量 : Worker"in Safari when creating a Web Worker

标签 javascript safari referenceerror

我在 JavaScript 代码中使用 Web Worker,我使用 Worker 的类如下所示:

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 互联网浏览器中运行。但是,当“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 错误:

https://bugs.webkit.org/show_bug.cgi?id=25212

关于JavaScript "ReferenceError: Can' t 查找变量 : Worker"in Safari when creating a Web Worker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64045547/

相关文章:

javascript - window.someRandomVar 与 someRandomVar 之间的区别

javascript - 如何在 Node 的另一个 Controller 中调用一个 Controller 方法

javascript - 获取 div 宽度并添加到边框

javascript - .net mvc 中的 ajax 请求上未显示 json 对象

reactjs - Safari 在每次渲染时以不同的顺序渲染数组元素

javascript - 如果我没有 Mac 和 Safari,我该如何重现 Javascript 错误?

html - 为什么用户代理样式表会覆盖我在 Safari 7.0.0 中的 CSS 样式表

javascript - jsPDF 引用错误 : window is not defined

javascript - 为什么 1px 宽度的线在左数不同时看起来不同?

jquery - ReferenceError: 调试时 $ 未定义