将 WebWoker 与 create-react-app 和 typescript 结合使用

Tan*_*Dat 3 web-worker typescript reactjs create-react-app

我有项目使用create-react-apptypescript

我希望能够WebWorker执行一些昂贵的任务。但我还没有找到任何解决方案来启用它。

我浏览了一些图书馆:

你有什么想法?

提前致谢!

Tan*_*Dat 7

我终于使用了 [worker-loader]。它工作正常。

https://github.com/webpack-contrib/worker-loader#integrating-with-typescript

要与 TypeScript 集成,您需要为 worker 的导出定义一个自定义模块

// typings/custom.d.ts
declare module "worker-loader!*" {
  class WebpackWorker extends Worker {
    constructor();
  }

  export default WebpackWorker;
}
Run Code Online (Sandbox Code Playgroud)
// Worker.ts
const ctx: Worker = self as any;

// Post data to parent thread
ctx.postMessage({ foo: "foo" });

// Respond to message from parent thread
ctx.addEventListener("message", (event) => console.log(event));
Run Code Online (Sandbox Code Playgroud)
// App.ts
import Worker from "worker-loader!./Worker";

const worker = new Worker();

worker.postMessage({ a: 1 });
worker.onmessage = (event) => {};

worker.addEventListener("message", (event) => {});
Run Code Online (Sandbox Code Playgroud)