JavaScript Web Worker 关闭()不工作

问题描述 投票:0回答:1

我的网络工作者反复调用 close() 但没有停止。这是工人的脚本:

self.onmessage = function (e) {
    close();
    for (c in e.data) {
        postMessage(e.data[c]);
        close();
    }
}

for 循环执行没有问题。有人可以解释为什么吗?

javascript web-worker
1个回答
2
投票

它将简单地从那时起关闭 worker,但当前的 onmessage 事件将继续由该函数处理,即 for 循环将被执行。您需要在 worker 中使用一些逻辑来更新布尔值,然后在执行 for 循环之前检查该布尔值。

如果你不想执行 for 循环,那么你需要做这样的事情:

self.onmessage = function(e) {
    const valid = <SOME BOOLEAN LOGIC HERE>;
    if (valid) {
        for (c in e.data) {
            postMessage(e.data[c]);
        }
    } else {
        close();
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.