Del via


"Gengivelseshændelser" i Power BI-visualiseringer

Hvis du vil have en visualisering certificeret, skal den indeholde gengivelseshændelser. Disse hændelser giver lyttere (primært eksportér til PDF og eksport til PowerPoint) besked om, hvornår visualiseringen gengives, og hvornår den er klar til eksport.

Vigtigt

Alle visualiseringer, der eksporterer data (f.eks. til en PowerPoint- eller .pdf-fil ), skal indeholde gengivelseshændelser for at sikre, at eksporten ikke starter, før visualiseringen er færdig med at blive gengivet.

API'en til gengivelseshændelser består af tre metoder, der skal kaldes under gengivelse:

  • renderingStarted: Kald denne metode for at angive, at gengivelsen er startet. Kald altid denne metode som den første linje i opdateringsmetoden, da det er her, gengivelsesprocessen starter.

  • renderingFinished: Kald denne metode, når gengivelsen er fuldført, for at give lytterne besked om, at visualiseringens billede er klar til eksport. Dette kald skal være den sidste kodelinje, der kører, når visualiseringen opdateres. Det er normalt, men ikke altid, den sidste linje i opdateringsmetoden.

  • renderingFailed: Kald denne metode, hvis der opstår et problem under gengivelsen, for at give lyttere besked om, at gengivelsen ikke blev fuldført. Du kan overføre en valgfri streng for at angive en årsag til fejlen.

Bemærk

Gengivelseshændelser er et krav for certificering af visualiseringer. Uden dem bliver din visualisering ikke godkendt af Partnercenter til publicering. Du kan få flere oplysninger under Certificeringskrav.

Sådan bruger du API'en til gengivelseshændelser

Hvis du vil kalde gengivelsesmetoderne, skal du først importere IVisualEventService typen.

  1. Tilføj følgende import i filen visual.ts :

    import IVisualEventService = powerbi.extensibility.IVisualEventService;
    
  2. Tilføj et privat felt i IVisual klassen:

    private events: IVisualEventService;
    
  3. constructor I metoden for IVisual klassen skal du initialisere feltet:

    this.events = options.host.eventService;
    

Du kan nu kalde this.events.renderingStarted(options);, this.events.renderingFinished(options);og this.events.renderingFailed(options); , hvor det er relevant, i din opdateringsmetode .

Gengivelse af hændelseslivscyklus

Følg disse regler i hver update() cyklus:

  1. Ring op renderingStarted , når gengivelsen begynder.
  2. Kald præcis én fuldførelsesmetode for den pågældende cyklus:
    • renderingFinished når gengivelsen lykkes, eller
    • renderingFailed når gengivelsen mislykkes.
  3. Kald renderingFinished kun for asynkron gengivelse, når gengivelsen er fuldført.

Vigtigt

Lad update() ikke metoden afslutte uden at signalere fuldførelse. Når du har ringet til renderingStarted, skal du altid ringe til enten renderingFinished eller renderingFailed.

Kodeimplementeringsmønstre

Synkron opdatering med fejlhåndtering

public update(options: VisualUpdateOptions): void {
  this.host.eventService.renderingStarted(options);

  try {
    this.renderView(options); // visual rendering logic
    this.host.eventService.renderingFinished(options);
  } catch (error) {
    this.host.eventService.renderingFailed(options, String(error));
    throw error;
  }
}

Asynkron opdatering med fejlhåndtering

public async update(options: VisualUpdateOptions): Promise<void> {
  this.host.eventService.renderingStarted(options);

  try {
    await this.renderAsync(options); // visual rendering logic
    this.host.eventService.renderingFinished(options);
  } catch (error) {
    this.host.eventService.renderingFailed(options, String(error));
    throw error;
  }
}

Lover kæde med .then().catch()

public update(options: VisualUpdateOptions): void {
  this.host.eventService.renderingStarted(options);

  this.renderAsync(options) // visual rendering logic
    .then(() => {
      this.host.eventService.renderingFinished(options);
    })
    .catch((error) => {
      this.host.eventService.renderingFailed(options, String(error));
      throw error;
    });
}