Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Damit ein Visual zertifiziert werden kann, muss es Renderingereignisse umfassen. Diese Ereignisse teilen Listenern (vor allem In PDF exportieren und Nach PowerPoint exportieren) mit, wenn das Visual gerendert wird und wenn es bereit zum Exportieren ist.
Wichtig
Alle Visuals, die Daten exportieren – z. B. in eine PowerPoint- oder .pdf-Datei – müssen Renderingereignisse enthalten, damit der Export nicht beginnt, bevor das Rendern des Visuals abgeschlossen ist.
Die Renderingereignisse-API besteht aus drei Methoden zum Aufrufen während des Renderings:
renderingStarted: Rufen Sie diese Methode auf, um anzugeben, dass das Rendering gestartet wurde. Rufen Sie diese Methode immer als erste Zeile der Updatemethode auf, da dort der Renderingvorgang beginnt.renderingFinished: Rufen Sie diese Methode auf, wenn das Rendern erfolgreich abgeschlossen ist, um Listener zu benachrichtigen, dass das Bild des visuellen Elements für den Export bereit ist. Dieser Aufruf sollte die letzte Codezeile sein, die ausgeführt wird, wenn die visuelle Aktualisierung erfolgt. Sie ist in der Regel (aber nicht immer) die letzte Zeile der update-Methode.renderingFailed: Rufen Sie diese Methode auf, wenn während des Renderings ein Problem auftritt, um Listener darüber zu benachrichtigen, dass das Rendering nicht abgeschlossen wurde. Sie können eine optionale Zeichenfolge übergeben, um einen Grund für den Fehler anzugeben.
Hinweis
Renderingereignisse sind eine Voraussetzung für die Zertifizierung von Visuals. Ohne sie wird die Veröffentlichung Ihres Visual in Partner Center nicht genehmigt. Weitere Informationen finden Sie unter certification requirements (Zertifizierungsanforderungen).
Verwenden der API für Renderingereignisse
Um die Renderingmethoden aufzurufen, importieren Sie zuerst den IVisualEventService Typ.
Fügen Sie in Ihrer
visual.tsDatei den folgenden Import hinzu:import IVisualEventService = powerbi.extensibility.IVisualEventService;Fügen Sie in der
IVisualKlasse ein privates Feld hinzu:private events: IVisualEventService;Initialisieren Sie in der
constructorMethode derIVisualKlasse das Feld:this.events = options.host.eventService;
Sie können jetzt , this.events.renderingFinished(options);und this.events.renderingFailed(options); gegebenenfalls in Ihrer Update-Methode aufrufenthis.events.renderingStarted(options);.
Rendern des Ereignislebenszyklus
Befolgen Sie die folgenden Regeln in jedem update() Zyklus:
- Aufruf
renderingStartedbeim Rendern beginnt. - Rufen Sie genau eine Abschlussmethode für diesen Zyklus auf:
-
renderingFinishedwenn das Rendern erfolgreich ist, oder -
renderingFailedwenn das Rendern fehlschlägt.
-
- Rufen Sie
renderingFinishedfür asynchrones Rendering nur nach Abschluss des Renderings auf.
Wichtig
Beenden Sie die update() Methode nicht, ohne den Abschluss zu signalisieren. Nach dem Anruf renderingStartedmüssen Sie immer entweder renderingFinished oder renderingFailed.
Codeimplementierungsmuster
Synchrone Aktualisierung mit Fehlerbehandlung
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;
}
}
Asynchrone Aktualisierung mit Fehlerbehandlung
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;
}
}
Zusagekette mit .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;
});
}