PerformanceObserver: PerformanceObserver() Konstruktor
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.
Hinweis: Dieses Feature ist verfügbar in Web Workers.
Der PerformanceObserver()
Konstruktor erstellt ein neues PerformanceObserver
-Objekt mit dem angegebenen Beobachter-callback
. Der Beobachter-Callback wird aufgerufen, wenn Performance-Eintrag-Ereignisse für die Eintragstypen, die registriert wurden, aufgezeichnet werden, über die observe()
-Methode.
Syntax
new PerformanceObserver(callback)
Parameter
callback
-
Ein
PerformanceObserverCallback
-Callback, das aufgerufen wird, wenn beobachtete Performance-Ereignisse aufgezeichnet werden. Wenn der Callback aufgerufen wird, sind die folgenden Parameter verfügbar:entries
observer
-
Das
observer
-Objekt, das die oben genannten Einträge empfängt. options
-
Ein Objekt mit den folgenden Eigenschaften:
droppedEntriesCount
-
Die Anzahl der Einträge, die nicht aufgezeichnet werden konnten, weil der interne Puffer des
Performance
-Objekts voll war.Beachten Sie, dass dies nur das erste Mal bereitgestellt wird, wenn der Beobachter den Callback aufruft, wenn die gepufferten Einträge wiedergegeben werden. Nachdem der Beobachter beginnt, zukünftige Beobachtungen vorzunehmen, benötigt er den Puffer nicht mehr. Nach dem ersten Mal wird
options
ein leeres Objekt ({}
) sein.
Rückgabewert
Ein neues PerformanceObserver
-Objekt, das den angegebenen callback
aufruft, wenn beobachtete Performance-Ereignisse auftreten.
Beispiele
Einen PerformanceObserver erstellen
Das folgende Beispiel erstellt einen PerformanceObserver
, der auf "mark" (PerformanceMark
) und "measure" (PerformanceMeasure
) Ereignisse achtet. Der perfObserver
-Callback liefert eine list
(PerformanceObserverEntryList
), die es Ihnen ermöglicht, beobachtete Performance-Einträge zu erhalten.
function perfObserver(list, observer) {
list.getEntries().forEach((entry) => {
if (entry.entryType === "mark") {
console.log(`${entry.name}'s startTime: ${entry.startTime}`);
}
if (entry.entryType === "measure") {
console.log(`${entry.name}'s duration: ${entry.duration}`);
}
});
}
const observer = new PerformanceObserver(perfObserver);
observer.observe({ entryTypes: ["measure", "mark"] });
Verlorene Puffereinträge
Sie können PerformanceObserver
mit einem buffered
-Flag verwenden, um frühere Performance-Einträge abzuhören. Es gibt jedoch eine Puffergrößenbeschränkung. Der Performance-Observer-Callback enthält ein options
-Objekt: Beim ersten Aufruf des Callbacks durch den Beobachter hat der options
-Parameter eine droppedEntriesCount
-Eigenschaft, die angibt, wie viele Einträge aufgrund des vollen Pufferspeichers verloren gingen. Nachfolgende Callbacks haben einen leeren options
-Parameter.
function perfObserver(list, observer, options) {
list.getEntries().forEach((entry) => {
// do something with the entries
});
if (options?.droppedEntriesCount > 0) {
console.warn(
`${options?.droppedEntriesCount} entries got dropped due to the buffer being full.`,
);
}
}
const observer = new PerformanceObserver(perfObserver);
observer.observe({ type: "resource", buffered: true });
Normalerweise gibt es viele Ressourcentimingeinträge, und speziell für diese Einträge können Sie ebenfalls einen größeren Puffer mit performance.setResourceTimingBufferSize()
einstellen und das resourcetimingbufferfull
Ereignis beobachten.
Spezifikationen
Specification |
---|
Performance Timeline # dom-performanceobserver-constructor |
Browser-Kompatibilität
BCD tables only load in the browser