Start · Sprachen · JavaScript · Referenz · PressureRecord.source

PressureRecord.source

Eigenschaft

Schreibgeschützter String, der angibt, von welcher Quelle (derzeit <code>"cpu"</code>) ein <code>PressureRecord</code> der Compute Pressure API stammt.

seit JavaScript Compute Pressure API – Chrome/Edge 125+ (experimen Kategorie: webapi

Signatur

PressureRecord.source

Beschreibung

Die Eigenschaft source eines PressureRecord nennt die Quelle, deren Auslastungszustand der Datensatz beschreibt. Der Wert entspricht der Quelle, die zuvor an PressureObserver.prototype.observe(source) übergeben wurde. Laut aktueller Spezifikation ist der einzige gültige Wert "cpu". Er steht für die Auslastung der Hauptprozessoren (CPU-Kerne) des Geräts.

Wichtig ist die Eigenschaft vor allem dann, wenn ein einziger Beobachter mehrere Quellen überwacht oder dieselbe Callback-Funktion für mehrere Beobachter genutzt wird. Über record.source ordnet man jeden Datensatz eindeutig einer Quelle zu, zum Beispiel um Zustände getrennt zu speichern oder in Protokollen anzuzeigen.

Welche Quellen der aktuelle Browser kennt, verrät die statische Eigenschaft PressureObserver.knownSources. Die Spezifikation soll künftig weitere Quellen erhalten. Deshalb sollte Code unbekannte Werte von source sauber ignorieren und nicht davon ausgehen, dass immer "cpu" geliefert wird.

Rückgabewert

Typ
string
Beschreibung
Ein Wert aus dem Aufzählungstyp PressureSource. Derzeit ist das nur "cpu". Die Eigenschaft ist schreibgeschützt.

Beispiele

Quelle und Zustand im Observer-Callback ausgeben

const callback = (records) => {
  for (const record of records) {
    console.log(`Quelle: ${record.source}, Zustand: ${record.state}`);
  }
};

if ('PressureObserver' in globalThis) {
  const observer = new PressureObserver(callback);
  await observer.observe('cpu', { sampleInterval: 1000 });
} else {
  console.log('Compute Pressure API nicht verfügbar');
}
Quelle: cpu, Zustand: nominal

Letzten Zustand pro Quelle speichern

const latestBySource = new Map();

const observer = new PressureObserver((records) => {
  for (const { source, state, time } of records) {
    latestBySource.set(source, { state, time });
  }
  const cpu = latestBySource.get('cpu');
  if (cpu?.state === 'critical') {
    // Rechenintensive Effekte drosseln, z. B. Videoauflösung senken
    console.warn('CPU überlastet – Qualität wird reduziert');
  }
});

// Nur Quellen beobachten, die der Browser tatsächlich kennt
for (const source of PressureObserver.knownSources) {
  await observer.observe(source);
}
CPU überlastet – Qualität wird reduziert

Datensatz als JSON serialisieren (z. B. für Telemetrie)

const observer = new PressureObserver((records) => {
  const payload = records.map((r) => r.toJSON());
  console.log(JSON.stringify(payload));
});

await observer.observe('cpu');
[{"source":"cpu","state":"fair","time":10342.5}]

// Wichtig · Fallstricke

  • Browser-Kompatibilität: Die API ist experimentell. Sie steht nur in Chromium-Browsern (ab Chrome/Edge 125) zur Verfügung, nicht in Firefox und Safari. Vor der Nutzung sollte man mit 'PressureObserver' in globalThis prüfen, ob sie vorhanden ist.
  • Die API funktioniert nur in einem sicheren Kontext (HTTPS). In iframes muss die Permissions Policy compute-pressure sie erlauben. Nutzbar ist sie in Fenstern und Dedicated Workern.
  • Derzeit ist nur "cpu" spezifiziert. Frühere Entwürfe enthielten auch "thermals", dieser Wert wurde aber entfernt. Wer source fest mit Zeichenketten vergleicht, sollte unbekannte Werte trotzdem einplanen.
  • Wird eine nicht unterstützte Quelle an observe() übergeben, wird das Promise mit einem NotSupportedError abgelehnt. Mit PressureObserver.knownSources lässt sich das vorher prüfen.
  • Die Eigenschaft ist schreibgeschützt. Eine Zuweisung wird im nicht-strikten Modus stillschweigend ignoriert und löst im strikten Modus einen TypeError aus.