Signatur
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
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');
}
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);
}
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');
// 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 globalThisprüfen, ob sie vorhanden ist. - Die API funktioniert nur in einem sicheren Kontext (HTTPS). In iframes muss die Permissions Policy
compute-pressuresie 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. Wersourcefest mit Zeichenketten vergleicht, sollte unbekannte Werte trotzdem einplanen. - Wird eine nicht unterstützte Quelle an
observe()übergeben, wird das Promise mit einemNotSupportedErrorabgelehnt. MitPressureObserver.knownSourceslä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
TypeErroraus.