このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

PerformanceObserver: PerformanceObserver() コンストラクター

Baseline 広く利用可能 *

この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2020年1月以降、すべてのブラウザーで利用可能です。

* この機能の一部は、対応レベルが異なる場合があります。

PerformanceObserver() コンストラクターは、新しい PerformanceObserver オブジェクトを、指定されたオブザーバー callback を使用して作成します。オブザーバーコールバックは、パフォーマンス項目イベントが登録された項目型に対して記録されたときに、observe() メソッドを介して呼び出されます。

構文

js
new PerformanceObserver(callback)

引数

callback

監視対象のパフォーマンスイベントが記録されたときに呼び出される PerformanceObserverCallback コールバック。コールバックが呼び出されるとき、以下の引数が利用できます。

entries

パフォーマンスオブザーバー項目のリストです。

observer

上記の項目を受け取っている observer オブジェクトです。

droppedEntriesCount 省略可

バッファーが一杯になったためにバッファーから失われた項目の数です。buffered フラグを参照してください。

返値

監視対象のパフォーマンスイベントが発生したときに指定されたコールバック (callback) を呼び出す新しい PerformanceObserver オブジェクト。

PerformanceObserver の作成

次の例では、 "mark" (PerformanceMark) および "measure" (PerformanceMeasure) イベントを監視する PerformanceObserver を作成します。 perfObserver コールバックは list (PerformanceObserverEntryList) を提供し、監視しているパフォーマンス項目を取得することができます。

js
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"] });

失われたバッファー項目

PerformanceObserverbuffered フラグを使用して、過去のパフォーマンス項目を使用することができます。 ただし、バッファーサイズには制限があります。パフォーマンスオブザーバーのコールバックにはオプションで droppedEntriesCount 引数が格納され、バッファーストレージが一杯になったために失われた項目の数を通知します。

js
function perfObserver(list, observer, droppedEntriesCount) {
  list.getEntries().forEach((entry) => {
    // do something with the entries
  });
  if (droppedEntriesCount > 0) {
    console.warn(
      `${droppedEntriesCount} entries got dropped due to the buffer being full.`,
    );
  }
}
const observer = new PerformanceObserver(perfObserver);
observer.observe({ type: "resource", buffered: true });

通常、リソースタイミング項目はたくさんあり、これらの項目については、 performance.setResourceTimingBufferSize() を使用してより大きなバッファーを設定し、 resourcetimingbufferfull イベントを監視することもできます。

仕様書

仕様書
Performance Timeline
# dom-performanceobserver-performanceobserver

ブラウザーの互換性