typescript 创建Webworker的Url.createObjectURL/Blob也会创建一个失败的GET请求

fjaof16o  于 2023-02-10  发布在  TypeScript
关注(0)|答案(1)|浏览(214)

在我的代码中,我从转换后的ts文件创建了Worker:

//woker-builder.js
export default class WorkerBuilder extends Worker {
  constructor(worker: any) {
    super(worker);
    const code = worker.toString();
    const blob = new Blob([`(${code})()`], { type: 'application/javascript' });
    return new Worker(
      /* webpackChunkName: "build-worker" */
      URL.createObjectURL(blob),
    );
  }
}

创建这些worker的工作与预期的一样,但它们也各自创建一个到worker.toString()的“url”的GET Web请求。
console output of the networking tab
我是这样称呼workerbuilder的:

import createColumnChartSeries from '../R2ColumnChart/workers/createColumnChartSeries';
const workerProcess = new WorkerBuilder(createColumnChartSeries)

其中createColumnChartSeries是一个(然后转移)ts文件。
onMessage和.postMessage按预期工作,但是有一个上面描述的奇怪的GET错误。我希望只拥有工作的工作者,而不发出任何GET请求。

djp7away

djp7away1#

@Kaiido真的离答案很近了,谢谢!

//woker-builder.js
export default class WorkerBuilder extends Worker {
  constructor(worker: any) {
    const code = worker.toString();
    const blob = new Blob([`(${code})()`], { type: 'application/javascript' });
    super(
      /* webpackChunkName: "build-worker" */
      URL.createObjectURL(blob),
    );
  }
}

使用此调用,如果调用体中没有返回,则可以正确创建工作进程。

相关问题