files/en-us/web/api/performanceobserver/observe/index.md
{{APIRef("Performance API")}}{{AvailableInWorkers}}
The observe() method of the {{domxref("PerformanceObserver")}} interface is used to specify the set of performance entry types to observe.
See {{domxref("PerformanceEntry.entryType")}} for a list of entry types and {{domxref("PerformanceObserver.supportedEntryTypes_static", "PerformanceObserver.supportedEntryTypes")}} for a list of entry types the user agent supports.
When a matching performance entry is recorded, the performance observer's callback function—set when creating the {{domxref("PerformanceObserver")}}—is invoked.
observe(options)
options
buffered
type option.durationThreshold
entryTypes option.entryTypes
: An array of strings, each specifying one performance entry type to observe. May not be used together with
the type, buffered, or durationThreshold options.
See {{domxref("PerformanceEntry.entryType")}} for a list of valid performance entry type names. Unrecognized types are ignored, though the browser may output a warning message to the console to help developers debug their code. If no valid types are found, observe() has no effect.
type
entryTypes option.None ({{jsxref("undefined")}}).
This example creates a PerformanceObserver and watches for "mark" and "measure" entry types as specified by the entryTypes option given in the observe() method.
const observer = new PerformanceObserver((list, obj) => {
list.getEntries().forEach((entry) => {
// Process "mark" and "measure" events
});
});
observer.observe({ entryTypes: ["mark", "measure"] });
The following example retrieves buffered events and subscribes to newer events for resource timing events ({{domxref("PerformanceResourceTiming")}}) using the buffered and type configuration options. Whenever you need to configure the observer to use the buffered or durationThreshold option, use type instead of entryType. Collecting multiple types of performance entry types will not work otherwise.
const observer = new PerformanceObserver((list, obj) => {
list.getEntries().forEach((entry) => {
// Process "resource" events
});
});
observer.observe({ type: "resource", buffered: true });
{{Specifications}}
{{Compat}}