Signatur
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
["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-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();
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}`)
);
}
// Wichtig · Fallstricke
- Experimentell: Nur Chromium-Browser auf dem Desktop unterstützen die Eigenschaft (Chrome/Edge ab 125). Firefox und Safari kennen
PressureObservernicht. Prüfe deshalb immer zuerst'PressureObserver' in globalThis. - Sicherer Kontext: Die API gibt es nur über HTTPS bzw.
localhost. In iframes muss die Permissions-Policycompute-pressuresie erlauben. - Bekannt heißt nicht verfügbar: Ein Eintrag in
knownSourcessagt nur, dass der Browser die Quelle kennt.observe()kann trotzdem mitNotSupportedErrorfehlschlagen, 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 einenTypeError. - Die Eigenschaft gibt es auch in Workern (Dedicated und Shared Worker).