angular - Hur kör man async-funktion utanför ngZone?


Jag har försökt att köra skript utanför nuvarande zon:

  async ngAfterViewInit(): Promise<void> {
     this.ngZone.runOutsideAngular(() => {
       await this.run();
     });
  }
  
  async run() { // TODO }

Jag får det här felet:

'await' expressions are only allowed within async functions and at the top levels of modules.ts

Svar #1

Funktionen ngAfterViewInit är asynkron, men sedan har du använt this.ngZone.runOutsideAngular med en icke-asynkron återanropsfunktion.

Din kod behöver se ut så här...

ngAfterViewInit(): void {
    this.ngZone.runOutsideAngular(async () => {
        await this.run();
    });
}

async run() { // TODO }