Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 离子2中的网页包和网络工作者_Javascript_Typescript_Webpack_Ionic2_Web Worker - Fatal编程技术网

Javascript 离子2中的网页包和网络工作者

Javascript 离子2中的网页包和网络工作者,javascript,typescript,webpack,ionic2,web-worker,Javascript,Typescript,Webpack,Ionic2,Web Worker,我们计划在ionic 2应用程序中使用web workers。然而,爱奥尼亚2在网页包中使用爱奥尼亚应用程序脚本(,我们使用的是1.0.0版)。我们需要一个webworker typescript文件,该文件被编译为JS,但不能作为main.JS和其他文件捆绑在一起 我们考虑的是文件名格式,例如 servicetest.worker.ts,其中“.worker”文件扩展名部分将被识别并从typescript编译为javascript,但不会与其他文件捆绑在一起 对此,我们非常感谢您提供的任何建议

我们计划在ionic 2应用程序中使用web workers。然而,爱奥尼亚2在网页包中使用爱奥尼亚应用程序脚本(,我们使用的是1.0.0版)。我们需要一个webworker typescript文件,该文件被编译为JS,但不能作为main.JS和其他文件捆绑在一起

我们考虑的是文件名格式,例如

servicetest.worker.ts,其中“.worker”文件扩展名部分将被识别并从typescript编译为javascript,但不会与其他文件捆绑在一起


对此,我们非常感谢您提供的任何建议,因为我们似乎必须自定义应用程序脚本。

这是一个非常晚的答案,但可能对其他人有所帮助。 看看

我阅读了那篇文章,但不得不做一些调整,因为我必须根据需要调用worker方法,而不是在构造函数上

/src/assets
文件夹中,创建一个名为workers的新文件夹,您的worker。JS文件将位于其中。是的JS不是TS,据我所知,TypeScript文件不会编译成可用的webworker

创建一个webworker。我将粘贴fuzzySearch webworker的主代码(
/assets/workers/fuzzySearch worker.js
):

在.ts文件中声明worker变量(通常位于构造函数上方):

在构造器上:

private readonly searchWorker: Worker = new Worker('./assets/workers/fuzzysearch-worker.js');
constructor(/* Other injected dependencies here */
    public ngZone: NgZone) {       

        this.searchWorker.onmessage = (event) => {
          // Inside ngZone for proper ChangeDetection
          this.ngZone.run(()=> {                        
            this.dataList = event.data.filteredList;
            console.timeEnd('searchWorker');
          })
        };        

  }
最后,关于您的“操作函数”,让我们假设
doSearch

doSearch(event) {
    // ... extra code to do some magic

    console.time('searchWorker');
    this.searchWorker.postMessage({ command: 'doFuzzySearch', originalList: this.realList, pattern: searchFilter });

    // ... extra code to do some other magic
}
this.searchWorker.postMessage
进行调用。所有重载操作都在webworker内部解决

希望能有帮助。 致以最良好的祝愿

doSearch(event) {
    // ... extra code to do some magic

    console.time('searchWorker');
    this.searchWorker.postMessage({ command: 'doFuzzySearch', originalList: this.realList, pattern: searchFilter });

    // ... extra code to do some other magic
}