- 将共享函数封装在一个模块中,通过 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',