【发布时间】:2018-11-26 20:32:53
【问题描述】:
我有一个应用程序,它使用网络工作者来帮助与其他工作者进行一些计算。它抛出的错误本质上是抱怨它所期望的数据不存在,因为计算没有计算出来。
计算是在网络工作者运行的情况下在本地执行的,但在生产过程中,我几乎不知道为什么它不工作。
需要注意的一点是,因为我需要导入某些函数的上下文(在工作人员上下文之外定义),所以我遵循了这里建议的建议:(Creating a web worker inside React)并首先将其串入并转动先把它变成一个blob。
`
export const buildBlobUrlFromCode = (code) => {
// returns a DOMString that links context to the code within the blob
code = code.substring(code.indexOf("{") + 1, code.lastIndexOf("}"));
const blob = new Blob([code], { type: "application/javascript" });
return URL.createObjectURL(blob);
}
export class WebWorker {
constructor(worker) {
let code = worker.toString();
// const blobUrl = strDecoratedBuildBlobUrlFromCode(code);
const blobUrl = buildBlobUrlFromCode(code);
return new Worker(blobUrl);
}
}
我如何使用上面的代码是:
const workerInstance = new WebWorker(MyWorker);
其中MyWorker 是一个导出的fn,其中定义了onmessage 并在其中定义了所有操作。
我添加了一些日志,基本上当我开始计算时代码中断:workerInstance.postMessage([data]);
另外需要注意的是,我正在使用 react-create-app 来构建我的应用程序,我还没有弹出,所以 webpack 配置没有改变。
另外——这些worker的源文件在部署时是完全空白的,但在本地填充(我可以在worker.js文件中看到实际代码)
【问题讨论】:
标签: javascript web browser web-worker