判断是否在Worker线程中

313 阅读1分钟

判断是否在Worker线程中

export const inWebWorker = (): boolean => {
  return (
    typeof global.postMessage !== "undefined" &&
    typeof WorkerGlobalScope !== "undefined" &&
    self instanceof WorkerGlobalScope
  );
};


export const inSharedWorker = (): boolean =>
  typeof SharedWorkerGlobalScope !== "undefined" && self instanceof SharedWorkerGlobalScope;

由于ServiceWorker相关类型位于 中lib.webworker.d.ts,因此webworker需要将 lib 添加到tsconfig.json.

{
  "compilerOptions": {
    "lib": [
      "es2017",
      "webworker"
    ]
  }
}