Start · Sprachen · JavaScript · Referenz · Window.clearImmediate()

Window.clearImmediate()

Methode

Bricht einen zuvor mit <code>window.setImmediate()</code> eingeplanten Rückruf ab, bevor er ausgeführt wird.

seit JavaScript Nicht standardisiert — nur Internet Explorer 10+ u deprecated seit ja Kategorie: webapi

Signatur

Window.clearImmediate(immediateID)

Beschreibung

clearImmediate() ist das Gegenstück zu setImmediate(): Die Methode nimmt die Kennung entgegen, die setImmediate() zurückgegeben hat, und entfernt den zugehörigen Rückruf aus der Warteschlange. Der Rückruf wird dann nicht mehr ausgeführt.

Die Methode wurde von Microsoft vorgeschlagen und nur im Internet Explorer 10/11 sowie im alten (EdgeHTML-)Edge umgesetzt. Sie hat es nie in einen Webstandard geschafft und wird von Chrome, Firefox und Safari nicht unterstützt. In Node.js gibt es dagegen eine gleichnamige globale Funktion, die mit einem Immediate-Objekt arbeitet.

In modernem Browser-Code nutzt man stattdessen setTimeout(fn, 0) mit clearTimeout(), queueMicrotask() (nicht abbrechbar) oder einen MessageChannel, dessen Rückruf man über ein Flag bzw. einen AbortSignal selbst deaktiviert.

Parameter

Name Typ Default Beschreibung
$immediateID Pflicht number | Immediate Die von setImmediate() zurückgegebene Kennung. Im Browser (IE) eine Zahl, in Node.js ein Immediate-Objekt. Ungültige oder bereits ausgeführte Kennungen werden stillschweigend ignoriert.

Rückgabewert

Typ
undefined
Beschreibung
Kein Rückgabewert.

Beispiele

Eingeplanten Rückruf abbrechen (Node.js)

const id = setImmediate(() => {
  console.log('Wird nie ausgegeben');
});

// Noch im selben Durchlauf abbrechen
clearImmediate(id);
console.log('Rückruf abgebrochen');
Rückruf abgebrochen

Mit Feature-Erkennung und Fallback im Browser

const schedule = typeof window.setImmediate === 'function'
  ? (fn) => window.setImmediate(fn)
  : (fn) => setTimeout(fn, 0);

const cancel = typeof window.clearImmediate === 'function'
  ? (id) => window.clearImmediate(id)
  : (id) => clearTimeout(id);

const id = schedule(() => console.log('Aufgabe ausgeführt'));
cancel(id);
console.log('Aufgabe storniert');
Aufgabe storniert

Entprellte Speicherung abbrechen, wenn neue Daten kommen (Node.js)

let pending = null;

const saveSoon = (data) => {
  // Vorherige, noch nicht ausgeführte Speicherung verwerfen
  if (pending) clearImmediate(pending);
  pending = setImmediate(() => {
    console.log('Gespeichert:', data);
    pending = null;
  });
};

saveSoon({ v: 1 });
saveSoon({ v: 2 });
saveSoon({ v: 3 });
Gespeichert: { v: 3 }

// Wichtig · Fallstricke

  • Nicht standardisiert: Im Browser nur in IE 10/11 und Legacy-Edge verfügbar. Chrome, Firefox, Safari und das Chromium-basierte Edge kennen window.clearImmediate nicht, der Aufruf führt dort zu einem TypeError. Für Produktionscode nicht verwenden oder vorher auf Existenz prüfen.
  • Polyfills (z. B. das npm-Paket setimmediate) stellen beide Funktionen über postMessage bzw. MessageChannel nach. Das ist nur nötig, wenn alter Code darauf angewiesen ist.
  • In Node.js erwartet clearImmediate() das Immediate-Objekt und keine Zahl. Kennungen von setTimeout() oder setInterval() lassen sich damit nicht abbrechen, dafür gibt es clearTimeout() bzw. clearInterval().
  • Wird die Methode aufgerufen, nachdem der Rückruf schon gelaufen ist, passiert nichts. Es wird kein Fehler geworfen.