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 January 2020.
* Some parts of this feature may have varying levels of support.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Der PerformanceObserver()
Konstruktor erstellt ein neues PerformanceObserver
Objekt mit dem angegebenen Beobachter-callback
. Der Beobachter-Callback wird aufgerufen, wenn Performance-Entry-Ereignisse für die Entry-Typen, die über die observe()
Methode registriert wurden, aufgezeichnet werden.
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 erhält. options
-
Ein Objekt mit den folgenden Eigenschaften:
droppedEntriesCount
-
Die Anzahl der Einträge, die nicht aufgezeichnet werden konnten, da der interne Puffer des
Performance
Objekts voll war.Beachten Sie, dass dies nur beim ersten Aufruf des Callbacks durch den Beobachter bereitgestellt wird, wenn die gepufferten Einträge wiedergegeben werden. Sobald der Beobachter beginnt, zukünftige Beobachtungen zu machen, muss er den Puffer nicht mehr verwenden. 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
Erstellen eines PerformanceObserver
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"] });
Verworfene Puffereinträge
Sie können PerformanceObserver
mit einem buffered
-Flag verwenden, um auf vergangene Performance-Einträge zu hören.
Es gibt jedoch eine Begrenzung der Pufferspeichergröße. Der Performance-Observer-Callback enthält ein options
-Objekt: Beim ersten Aufruf des Callbacks durch den Beobachter wird der options
-Parameter eine droppedEntriesCount
-Eigenschaft enthalten, die Ihnen mitteilt, wie viele Einträge aufgrund des vollen Pufferspeichers verworfen wurden. 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 });
In der Regel gibt es viele Resource-Timing-Einträge, und speziell für diese Einträge können Sie auch einen größeren Puffer mit performance.setResourceTimingBufferSize()
festlegen und auf das resourcetimingbufferfull
Ereignis achten.
Spezifikationen
Specification |
---|
Performance Timeline # dom-performanceobserver-constructor |