如何从内部停止 js web worker?

How to stop js web worker from within?

TLDR:什么是 WorkerGlobalScope.close() 的替代品而不是 deprecated

我想从内部 close/stop/terminate 一个 Javascript web worker,在它的工作完成后,因为有一个 setInterval() 即使在主要工作完成后仍保持活动状态完成。

正在阅读这个 SO 问题 (), it seems like self.close() is what I'm searching for. But apparently this is deprecated (stated here),但没有提及其他选择。

到目前为止,我想到的唯一替代方法是向主线程发送一条消息,然后主线程调用 worker.terminate() 调用,但这似乎有点过分,因为我需要检查每条消息以这种方式提出终止请求。

我错过了什么吗?我应该使用什么?

此通知具有误导性 .close() 根本没有弃用。

这里发生的是,在规范中 WorkerGlobalScope 是一个由不同工作人员类型(DedicatedWorkers、ServiceWorkers、SharedWorkers 以及其他规范中的其他 Worklet)使用的接口。
所有这些类型都没有 .close 方法(例如 ServiceWorkers 没有),因此该方法已移至每个特定类型的 worker 全局范围的定义中。

例如,您可以看到 DedicatedWorkerGlobalScope,它仍然存在,并且不会很快被弃用。

实际上是 also there in MDN