Start · Sprachen · JavaScript · Referenz · PerformanceObserverEntryList.getEntriesByName()

PerformanceObserverEntryList.getEntriesByName()

Methode

Gibt ein Array der von einem <code>PerformanceObserver</code> beobachteten <code>PerformanceEntry</code>-Objekte zurück, die zum angegebenen <code>name</code> und optional <code>entryType</code> passen.

seit JavaScript Baseline: alle modernen Browser (seit 2017) Kategorie: webapi

Signatur

PerformanceObserverEntryList.prototype.getEntriesByName(name, type)

Beschreibung

Die Methode getEntriesByName() wird auf dem PerformanceObserverEntryList-Objekt aufgerufen, das der Callback eines PerformanceObserver als erstes Argument erhält. Sie filtert die Einträge, die in diesem Callback-Durchlauf geliefert wurden, nach ihrem name und optional zusätzlich nach ihrem entryType.

Nützlich ist das, wenn man gezielt auf bestimmte Messpunkte reagieren möchte, etwa auf eine eigene Messung mit performance.measure("app-start"), auf die Ressource einer bestimmten URL (bei resource-Einträgen ist name die vollständige URL) oder auf Paint-Einträge wie "first-contentful-paint".

Wichtig: Die Liste enthält nur die Einträge des aktuellen Callback-Aufrufs und nur die Eintragstypen, die mit observe() abonniert wurden. Sie ist also keine globale Zeitleiste wie performance.getEntriesByName(). Die Einträge sind chronologisch nach startTime sortiert.

Parameter

Name Typ Default Beschreibung
$name Pflicht string Name der gesuchten Einträge, z. B. der Name einer Markierung/Messung oder die vollständige URL einer Ressource. Der Vergleich erfolgt exakt und unterscheidet Groß-/Kleinschreibung.
$type string Optionaler Eintragstyp (entryType) als zusätzlicher Filter, z. B. "mark", "measure", "resource", "paint".

Rückgabewert

Typ
PerformanceEntry[]
Beschreibung
Ein Array passender PerformanceEntry-Objekte (bzw. Unterklassen wie PerformanceMark, PerformanceMeasure, PerformanceResourceTiming), sortiert nach startTime. Gibt es keine Treffer, ist das Array leer.

Beispiele

Eigene Messung gezielt auswerten

const observer = new PerformanceObserver((list) => {
  // Nur Messungen mit dem Namen "daten-laden"
  const entries = list.getEntriesByName("daten-laden", "measure");
  entries.forEach((entry) => {
    console.log(`${entry.name}: ${entry.duration.toFixed(1)} ms`);
  });
});

observer.observe({ entryTypes: ["mark", "measure"] });

const ladeDaten = async () => {
  performance.mark("laden-start");
  await new Promise((r) => setTimeout(r, 120));
  performance.mark("laden-ende");
  performance.measure("daten-laden", "laden-start", "laden-ende");
};

ladeDaten();
daten-laden: 121.4 ms

Ladezeit einer bestimmten Ressource überwachen

const apiUrl = new URL("/api/produkte", location.href).href;

const observer = new PerformanceObserver((list) => {
  // name ist bei resource-Einträgen die vollständige URL
  const [eintrag] = list.getEntriesByName(apiUrl, "resource");
  if (eintrag) {
    console.log("API-Antwortzeit:", Math.round(eintrag.responseEnd - eintrag.startTime), "ms");
    observer.disconnect();
  }
});

observer.observe({ type: "resource", buffered: true });

fetch("/api/produkte");
API-Antwortzeit: 87 ms

First Contentful Paint erfassen

new PerformanceObserver((list, obs) => {
  const fcp = list.getEntriesByName("first-contentful-paint")[0];
  if (fcp) {
    console.log("FCP:", Math.round(fcp.startTime), "ms");
    obs.disconnect();
  }
}).observe({ type: "paint", buffered: true });
FCP: 642 ms

// Wichtig · Fallstricke

  • Nur aktueller Durchlauf: Die Liste enthält ausschließlich die Einträge, die dem Callback gerade übergeben wurden. Einträge aus früheren Callbacks oder vor dem observe()-Aufruf fehlen – für Letztere buffered: true verwenden.
  • Nur abonnierte Typen: Wird z. B. nur \"mark\" beobachtet, liefert ein Filter auf \"measure\" immer ein leeres Array.
  • Ressourcen-Namen: Bei resource-Einträgen ist name die absolute, aufgelöste URL (inkl. Query-String). Relative Pfade finden nichts – mit new URL(pfad, location.href).href normalisieren.
  • Der Callback wird asynchron und gebündelt aufgerufen; mehrere Einträge können in einem Durchlauf ankommen, daher immer über das Array iterieren statt nur auf [0] zu vertrauen, wenn mehrere Treffer möglich sind.
  • Kompatibilität: In allen modernen Browsern, in Web Workern sowie in Node.js (perf_hooks, ab v8.5) verfügbar. Welche Eintragstypen unterstützt werden, zeigt PerformanceObserver.supportedEntryTypes.