thi*_*nck 5 web-worker typescript angular-cli angular
我正在尝试使用Web Worker在Angular 8应用程序中运行耗时的数据分析脚本,但是在捆绑该Worker时遇到了一些麻烦。我正在寻找帮助以找出我所缺少的东西。
我已使用Angular-CLI 8.0.2随附的示意图为我的项目生成了一个新工作线程:
ng g webWorker suggestions --project=my-project
Run Code Online (Sandbox Code Playgroud)
这会产生一个新的suggestions.worker.ts和tsconfig.worker.ts,并更新我的tsconfig.app.json, angular.json和package.json。这些对我来说看起来不错,但是如果需要,我可以提供详细信息。
我已将我移动suggestions.worker.ts到与实例化工作程序的服务相同的文件夹中。实例化工作程序的函数如下所示:
async calculateSuggestions<T>(
data: T[]
): Promise<Suggestions<T>> {
const worker = new Worker('./suggestions.worker', {
type: 'module',
});
const result = new Promise((resolve, reject) => {
worker.onmessage = ({ data }) => {
resolve(data);
};
worker.onerror = ({ error }) => {
reject(error);
};
}) as Promise<Suggestions<T>>;
worker.postMessage({
data: data
});
return result;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我构建项目时,出现以下警告和错误:
WARNING in new Worker() will only be bundled if passed a String.
ERROR in chunk suggestions-suggestions-module
suggestions-suggestions-module.js
{..} \node_modules\@ngtools\webpack\src\index.js! {..} \src\app\extractor\
No template for dependency: ConstDependency
Run Code Online (Sandbox Code Playgroud)
我的猜测是我没有Worker正确实例化,导致绑定过程失败。
该警告似乎表明我应该将a传递String给Worker构造函数,但是我已经这样做了。
此外,错误第3行上的感叹号后面的路径实际上是我在其中存储服务和工作文件的两个文件夹。也许这是一个提示?
任何建议将不胜感激!
| 归档时间: |
|
| 查看次数: |
610 次 |
| 最近记录: |