Start · Sprachen · JavaScript · Referenz · PressureObserver.knownSources

PressureObserver.knownSources

Eigenschaft

Statische, schreibgeschützte Eigenschaft, die ein eingefrorenes Array der vom Browser unterstützten Drucksensor-Quellen (z. B. <code>"cpu"</code>) in alphabetischer Reihenfolge liefert.

seit JavaScript Experimentell: Chrome/Edge 125+ (Desktop), nicht i Kategorie: webapi

Signatur

static get PressureObserver.knownSources

Beschreibung

PressureObserver.knownSources gehört zur Compute Pressure API. Die statische Eigenschaft gibt ein Array mit allen Werten für source zurück, die der Benutzeragent kennt. Diese Werte kann man an PressureObserver.prototype.observe() übergeben. Die Einträge sind alphabetisch sortiert, das Array ist eingefroren (Object.isFrozen() ergibt true).

Nützlich ist die Eigenschaft für Feature-Detection: Bevor eine Anwendung eine Quelle beobachtet, prüft sie, ob der Browser diese Quelle überhaupt kennt. So vermeidet man einen abgelehnten Promise von observe() mit NotSupportedError. Derzeit liefern Chromium-Browser nur ["cpu"]. Die Spezifikation lässt künftig weitere Quellen zu. Frühere Entwürfe nannten zum Beispiel "gpu" und "thermals".

Die Eigenschaft wird direkt an der Klasse aufgerufen, nicht an einer Instanz. Sie braucht also keinen PressureObserver-Konstruktor. Sie hat keine Parameter, weil sie ein reiner Getter ist.

Rückgabewert

Typ
ReadonlyArray<string>
Beschreibung
Ein eingefrorenes, alphabetisch sortiertes Array mit den Namen der unterstützten Quellen, z. B. ["cpu"]. Das Array enthält nur Quellen, die der Browser kennt. Ob die Hardware die Quelle wirklich liefern kann, zeigt erst observe().

Beispiele

Unterstützte Quellen auflisten

if ('PressureObserver' in globalThis) {
  console.log(PressureObserver.knownSources);
  console.log(Object.isFrozen(PressureObserver.knownSources));
} else {
  console.log('Compute Pressure API wird nicht unterstützt.');
}
["cpu"] true

CPU-Last nur beobachten, wenn "cpu" bekannt ist

const startCpuMonitoring = async () => {
  if (!('PressureObserver' in globalThis) ||
      !PressureObserver.knownSources.includes('cpu')) {
    console.warn('CPU-Drucküberwachung nicht verfügbar.');
    return null;
  }

  const observer = new PressureObserver((records) => {
    const latest = records.at(-1);
    console.log(`CPU-Zustand: ${latest.state}`);
  });

  try {
    await observer.observe('cpu', { sampleInterval: 2000 });
    return observer;
  } catch (err) {
    console.error('Beobachtung fehlgeschlagen:', err.name);
    return null;
  }
};

const observer = await startCpuMonitoring();
CPU-Zustand: nominal

Alle bekannten Quellen gleichzeitig beobachten

const observer = new PressureObserver((records) => {
  for (const { source, state } of records) {
    console.log(`${source}: ${state}`);
  }
});

for (const source of PressureObserver.knownSources) {
  observer.observe(source).catch((err) =>
    console.warn(`${source} nicht beobachtbar: ${err.name}`)
  );
}
cpu: fair

// Wichtig · Fallstricke

  • Experimentell: Nur Chromium-Browser auf dem Desktop unterstützen die Eigenschaft (Chrome/Edge ab 125). Firefox und Safari kennen PressureObserver nicht. Prüfe deshalb immer zuerst 'PressureObserver' in globalThis.
  • Sicherer Kontext: Die API gibt es nur über HTTPS bzw. localhost. In iframes muss die Permissions-Policy compute-pressure sie erlauben.
  • Bekannt heißt nicht verfügbar: Ein Eintrag in knownSources sagt nur, dass der Browser die Quelle kennt. observe() kann trotzdem mit NotSupportedError fehlschlagen, wenn Plattform oder Hardware keine Daten liefert. Fange den Promise daher immer ab.
  • Das Array ist eingefroren. push() und ähnliche Methoden werfen im Strict Mode einen TypeError.
  • Die Eigenschaft gibt es auch in Workern (Dedicated und Shared Worker).