Start · Sprachen · JavaScript · Referenz · LanguageDetector.destroy()

LanguageDetector.destroy()

Methode

Gibt die Ressourcen einer <code>LanguageDetector</code>-Instanz frei und beendet alle laufenden und künftigen Erkennungsvorgänge auf ihr.

seit JavaScript Experimentell: Chrome 138+ (Built-in AI APIs), nic Kategorie: webapi

Signatur

LanguageDetector.prototype.destroy()

Beschreibung

Die Methode destroy() der Schnittstelle LanguageDetector gehört zur Language Detector API, einer der eingebauten KI-APIs des Browsers. Ein Aufruf gibt die Ressourcen frei, die der Instanz zugewiesen sind, etwa das geladene Sprachmodell im Speicher. Danach ist die Instanz dauerhaft unbrauchbar.

Laufende Aufrufe von detect() oder measureInputUsage() werden abgebrochen, und ihre Promises werden mit einer AbortError-DOMException abgelehnt. Spätere Aufrufe auf der zerstörten Instanz schlagen ebenfalls fehl. Wer wieder Sprachen erkennen will, muss mit LanguageDetector.create() eine neue Instanz anlegen.

Rufen Sie destroy() auf, sobald Sie den Detektor nicht mehr brauchen, zum Beispiel beim Verlassen einer Ansicht, beim Aushängen einer Komponente (etwa React useEffect-Cleanup) oder nach einer einmaligen Stapelverarbeitung. Gerade auf Geräten mit wenig Arbeitsspeicher spart das deutlich Ressourcen, denn ein On-Device-Modell kann viel Speicher belegen.

Denselben Effekt erreichen Sie auch, indem Sie das AbortSignal abbrechen, das Sie über die Option signal an LanguageDetector.create() übergeben haben.

Rückgabewert

Typ
void
Beschreibung
Kein Rückgabewert (undefined).

Beispiele

Einmalige Erkennung mit anschließender Freigabe

const erkenneSprache = async (text) => {
  if (!('LanguageDetector' in self)) {
    throw new Error('Language Detector API nicht verfügbar');
  }
  const detector = await LanguageDetector.create();
  try {
    const [top] = await detector.detect(text);
    return top.detectedLanguage;
  } finally {
    // Ressourcen (Modell im Speicher) immer freigeben
    detector.destroy();
  }
};

console.log(await erkenneSprache('Guten Morgen, wie geht es dir?'));
de

Laufende Erkennung durch destroy() abbrechen

const detector = await LanguageDetector.create();

const promise = detector.detect('Ceci est un texte assez long …');
detector.destroy();

try {
  await promise;
} catch (err) {
  console.log(err.name);
}

// Weitere Aufrufe schlagen ebenfalls fehl
try {
  await detector.detect('Hello');
} catch (err) {
  console.log('Instanz zerstört:', err.name);
}
AbortError Instanz zerstört: AbortError

Aufräumen beim Verlassen einer Ansicht

let detector = null;

const startView = async () => {
  detector ??= await LanguageDetector.create({
    expectedInputLanguages: ['de', 'en', 'fr']
  });
  const input = document.querySelector('#kommentar');
  input.addEventListener('input', async () => {
    const [top] = await detector.detect(input.value);
    document.querySelector('#sprache').textContent = top?.detectedLanguage ?? '–';
  });
};

const stopView = () => {
  detector?.destroy();
  detector = null; // Referenz lösen, damit keine zerstörte Instanz weiterverwendet wird
};

await startView();
window.addEventListener('pagehide', stopView);

// Wichtig · Fallstricke

  • Nicht umkehrbar: Eine zerstörte Instanz lässt sich nicht wiederverwenden. Alle weiteren Aufrufe von detect() und measureInputUsage() werden mit AbortError abgelehnt. Setzen Sie Ihre Referenz deshalb danach auf null.
  • Laufende Promises: Offene Erkennungsaufrufe werden abgelehnt. Fangen Sie den AbortError gezielt ab, damit er nicht als unbehandelte Promise-Ablehnung auftaucht.
  • Alternative: Ein AbortSignal, das Sie über die Option signal an create() übergeben, zerstört die Instanz beim Abbrechen auf dieselbe Weise.
  • Mehrfachaufruf: Ein erneuter Aufruf von destroy() auf einer schon zerstörten Instanz richtet keinen Schaden an.
  • Kompatibilität: Die API ist experimentell. Sie ist derzeit nur in Chromium-basierten Desktop-Browsern verfügbar (Chrome 138+), setzt einen sicheren Kontext (HTTPS) voraus und kann über eine Permissions Policy eingeschränkt sein. Prüfen Sie die Verfügbarkeit vorher mit 'LanguageDetector' in self und LanguageDetector.availability().