我正在开发一个Web应用程序,该应用程序需要做一些繁重的工作,这些工作目前阻塞了整个线程。我希望在WebWorker中完成此任务,并在我的应用程序中显示进度栏。
我的问题是,看起来您只能使用self.importScripts('lib.js')
在Webworker中导入单个文件。
我正在使用的库(一个执行CPU密集型任务的库)是我自己用打字稿编写的。但是tsc
的输出是许多较小的文件,因此我不能在Webworker中使用它们。 Typescript确实支持将所有内容捆绑到一个文件中,但仅在使用amd
时(我在使用commonjs
和amd
时会产生构建错误)。
另一种方法,我实际上更喜欢的方法是,直接在我的库中使用WebWorkers。因此,我不必再担心在我的应用程序中,它们都将在NPM模块本身内部处理。但是,尝试这样做时遇到了两个问题:
我在库中使用的NPM模块遇到了与上述相同的问题
添加WebWorker文件并在由tsc
编译的代码中对其进行引用时,对该WebWorker的引用不再有效(并且也永远不会从{{1}中复制出来) },因此如果不更改应用程序的构建步骤就无法引用它)。我读到您可以使用内联WebWorkers,但我还没有找到一种简单的方法来做到这一点,说实话,这似乎有点不客气。
我找不到内部使用Webworkers的任何NPM模块,我不确定为什么。您可以给我的任何帮助或阅读资源将不胜感激。