Signatur
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
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');
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');
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 });
// 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.clearImmediatenicht, der Aufruf führt dort zu einemTypeError. Für Produktionscode nicht verwenden oder vorher auf Existenz prüfen. - Polyfills (z. B. das npm-Paket
setimmediate) stellen beide Funktionen überpostMessagebzw.MessageChannelnach. Das ist nur nötig, wenn alter Code darauf angewiesen ist. - In Node.js erwartet
clearImmediate()dasImmediate-Objekt und keine Zahl. Kennungen vonsetTimeout()odersetInterval()lassen sich damit nicht abbrechen, dafür gibt esclearTimeout()bzw.clearInterval(). - Wird die Methode aufgerufen, nachdem der Rückruf schon gelaufen ist, passiert nichts. Es wird kein Fehler geworfen.