- 将共享函数封装在一个模块中,通过 Angular 的 Provider 注册到主应用程序和 Web Worker 中。
 
// shared.module.ts
import { NgModule } from '@angular/core';
import { SharedService } from './shared.service';
@NgModule({
  providers: [SharedService]
})
export class SharedModule {}
// shared.service.ts
import { Injectable } from '@angular/core';
@Injectable()
export class SharedService {
  public sharedFunction(): void {
    console.log('Shared function called');
  }
}
- 在主应用程序中,将共享模块导入 AppModule 并设置为全局可用。
 
// app.module.ts
import { NgModule } from '@angular/core';
import { SharedModule } from './shared/shared.module';
@NgModule({
  imports: [SharedModule]
})
export class AppModule {}
- 在 Web Worker 中创建一个新的 AppModule 并导入 SharedModule。
 
// worker-app.module.ts
import { NgModule } from '@angular/core';
import { SharedModule } from '../shared/shared.module';
@NgModule({
  imports: [SharedModule]
})
export class WorkerAppModule {}
- 在 Web Worker 中,手动启动应用程序并将 WorkerAppModule 作为根模块。
 
// worker.ts
import { platformWorkerAppDynamic } from '@angular/platform-webworker-dynamic';
import { WorkerAppModule } from './worker-app/worker-app.module';
platformWorkerAppDynamic().bootstrapModule(WorkerAppModule);
- 在 Web Worker 中,注入 SharedService 并调用共享函数。
 
// worker.component.ts
import { Component } from '@angular/core';
import { SharedService } from '../../shared/shared.service';
@Component({
  selector: 'app-worker',
  template: 'Worker component'
})
export class WorkerComponent {
  constructor(private sharedService: SharedService) {
    this.sharedService.sharedFunction();
  }
}
- 在主应用程序中,通过 MessageEvent 向 Web Worker 发送消息,并在 Web Worker 中接收并处理该消息。
 
// app.component.ts
import { Component, OnInit } from '@angular/core';
@Component({
  selector: 'app-root',