我的网络工作者反复调用 close() 但没有停止。这是工人的脚本:
self.onmessage = function (e) {
close();
for (c in e.data) {
postMessage(e.data[c]);
close();
}
}
for 循环执行没有问题。有人可以解释为什么吗?
它将简单地从那时起关闭 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();
}
}