Σημείωμα
Η πρόσβαση σε αυτήν τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να εισέλθετε ή να αλλάξετε καταλόγους.
Η πρόσβαση σε αυτήν τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να αλλάξετε καταλόγους.
Για να πιστοποιήσετε μια απεικόνιση, πρέπει να περιλαμβάνει συμβάντα απόδοσης. Αυτά τα συμβάντα επιτρέπουν στους ακροατές (κυρίως, την εξαγωγή σε PDF και την εξαγωγή στο PowerPoint) να γνωρίζουν πότε αποδίδεται η απεικόνιση και πότε είναι έτοιμη για εξαγωγή.
Σημαντικό
Οποιαδήποτε απεικόνιση που εξάγει δεδομένα (για παράδειγμα, σε ένα αρχείο PowerPoint ή .pdf ) πρέπει να περιέχει συμβάντα απόδοσης για να εξασφαλίσει ότι η εξαγωγή δεν ξεκινά πριν ολοκληρωθεί η απόδοση της απεικόνισης.
Το API απόδοσης αποτελείται από τρεις μεθόδους κλήσης κατά την απόδοση:
renderingStarted: Καλέστε αυτήν τη μέθοδο για να υποδείξετε ότι η απόδοση ξεκίνησε. Να καλείτε πάντα αυτή τη μέθοδο ως την πρώτη γραμμή της μεθόδου ενημέρωσης, δεδομένου ότι από εκεί ξεκινά η διαδικασία απόδοσης.renderingFinished: Καλέστε αυτήν τη μέθοδο κατά την επιτυχή απόδοση, για να ειδοποιήσετε τις ακροατές ότι η εικόνα της απεικόνισης είναι έτοιμη για εξαγωγή. Αυτή η κλήση θα πρέπει να είναι η τελευταία γραμμή κώδικα που εκτελείται όταν ενημερώνεται η απεικόνιση. Συνήθως, αλλά όχι πάντα, είναι η τελευταία γραμμή της μεθόδου ενημέρωσης.renderingFailed: Καλέστε αυτήν τη μέθοδο εάν παρουσιαστεί κάποιο πρόβλημα κατά την απόδοση, για να ειδοποιήσετε τις ακροατές ότι η απόδοση δεν ολοκληρώθηκε. Μπορείτε να διαβιβάσετε μια προαιρετική συμβολοσειρά για να δώσετε μια αιτία για την αποτυχία.
Σημείωμα
Τα συμβάντα απόδοσης είναι απαίτηση για την πιστοποίηση απεικονίσεων. Χωρίς αυτές, η απεικόνισή σας δεν θα εγκριθεί από το Κέντρο συνεργατών για δημοσίευση. Για περισσότερες πληροφορίες, ανατρέξτε στις απαιτήσεις πιστοποίησης.
Τρόπος χρήσης του API συμβάντων απόδοσης
Για να καλέσετε τις μεθόδους απόδοσης, εισαγάγετε πρώτα τον IVisualEventService τύπο.
Στο αρχείο σας
visual.ts, προσθέστε την ακόλουθη εισαγωγή:import IVisualEventService = powerbi.extensibility.IVisualEventService;IVisualΣτην κλάση, προσθέστε ένα ιδιωτικό πεδίο:private events: IVisualEventService;constructorΣτη μέθοδο τηςIVisualκλάσης, προετοιμάστε το πεδίο:this.events = options.host.eventService;
Μπορείτε τώρα να καλέσετε this.events.renderingStarted(options);το , this.events.renderingFinished(options);και this.events.renderingFailed(options); , ανάλογα με την περίπτωση, στη μέθοδο ενημέρωσης .
Απόδοση κύκλου ζωής συμβάντων
Ακολουθήστε αυτούς τους κανόνες σε κάθε update() κύκλο:
- Η κλήση
renderingStartedόταν ξεκινά η απόδοση. - Καλέστε ακριβώς μία μέθοδο ολοκλήρωσης για αυτόν τον κύκλο:
-
renderingFinishedκατά την επιτυχή απόδοση, ή -
renderingFailedόταν η απόδοση αποτυγχάνει.
-
- Για ασύγχρονη απόδοση, η κλήση
renderingFinishedμόνο μετά την απόδοση είναι πραγματικά ολοκληρωμένη.
Σημαντικό
Μην αφήσετε τη update() μέθοδο να εξέλθει χωρίς την ολοκλήρωση σήματος. Αφού καλέσετε το renderingStarted, πρέπει πάντα να καλείτε το ή renderingFinishedrenderingFailedτο .
Μοτίβα υλοποίησης κώδικα
Σύγχρονη ενημέρωση με χειρισμό αποτυχίας
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;
}
}
Ασύγχρονη ενημέρωση με χειρισμό αποτυχιών
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;
}
}
Αλυσίδα υποσχέσεων με .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;
});
}