Worker报错

环境:Cocos3.8.5 , chrome 。
1.想用worker做一些复杂的运算。看起来浏览器是支持的。对象new出来就报错了。
2.就简简单单的几行代码。
3.


4.
5.
6.很简单的代码。没弄清楚为什么。
7.请教各位大佬。

是这样的 在cocos里面不能这样写 你要用字符串blob的形式去用,就是用``定义了,在代码里面去创建一个worker

多谢回复。没理解 “ 你要用字符串blob的形式去用” 。二进制?

1赞
 onLoad() {
        // Worker 脚本代码
        const workerCode = `
            self.onmessage = function(event) {
                const data = event.data;
                // 执行一些计算密集型的任务
                const result = performHeavyComputation(data);
                // 将结果发送回主线程
                self.postMessage(result);
            };

            function performHeavyComputation(data) {
                // 这里是你的计算逻辑
                let sum = 0;
                for (let i = 0; i < data.length; i++) {
                    sum += data[i];
                }
                return sum;
            }
        `;

        // 创建 Blob 对象
        const blob = new Blob([workerCode], { type: 'application/javascript' });
        const workerBlobURL = URL.createObjectURL(blob);

        // 创建 Worker
        if (typeof Worker !== 'undefined') {
            this.worker = new Worker(workerBlobURL);

            // 监听 Worker 发送的消息
            this.worker.onmessage = (event) => {
                const result = event.data;
                console.log('Result from worker:', result);
                // 处理结果
            };

            // 发送数据到 Worker
            const data = [1, 2, 3, 4, 5]; // 示例数据
            this.worker.postMessage(data);
        } else {
            console.error('Web Workers are not supported in this environment.');
        }
    },
1赞

多谢回复。我去操作一下。

没报错了。多谢。但是这样的代码怎么执行一些其他的引用。因为都是 “字符串”。

使用这个Worker需要用到什么库吗,直接写的话会报红提示
private worker!: Worker;
我需要在原生平台使用的话要引用什么库吗

h5环境不需要甚麽库,如果出红字可以看看tsconfig里的lib加入dom看看还有没有红字

谢谢,我要在原生平台使用, :rofl:

worker 里就是一独立环境, 没有上下文, 与主worker只能使用postMessage发送消息, ta不像其他语言的线程可以共用静态变量等, js的worker, 应该説ta是一个进程而不是线程

原生就别想, 自己只能在c++搞一个桥接接口, 把js传入由C++另建一个线程执行了

好的,谢谢