简体   繁体   English

将 WebWoker 与 create-react-app 和 typescript 一起使用

[英]Using WebWoker with create-react-app and typescript

I'm having the project using create-react-app and typescript我正在使用create-react-apptypescript进行项目

I would like to enable WebWorker to do some expensive tasks.我想让WebWorker做一些昂贵的任务。 But I have not found any solutions to enable it.但我还没有找到任何解决方案来启用它。

I have looked through some libraries:我浏览了一些库:

Do you have any ideas?你有什么想法?

Thanks in advance!提前致谢!

I finally use [worker-loader].我终于使用 [worker-loader]。 It works OK.它工作正常。

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

To integrate with TypeScript, you will need to define a custom module for the exports of your worker要与 TypeScript 集成,您需要为工作人员的导出定义一个自定义模块

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

  export default WebpackWorker;
}
// 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));
// App.ts
import Worker from "worker-loader!./Worker";

const worker = new Worker();

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

worker.addEventListener("message", (event) => {});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM