0 Tage Serie
javascript / intermediate
Snippet

Asynchrones Abbrechen mit AbortController

AbortController bietet eine Standardmöglichkeit, asynchrone Operationen abzubrechen. Durch die Übergabe eines AbortSignals an eine Aufgabe kann man auf ein 'abort'-Ereignis reagieren und Ressourcen bereinigen.

snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
const controller = new AbortController();
const { signal } = controller;
function performTask(signal) {
return new Promise((resolve, reject) => {
const timeout = setTimeout(() => resolve('Task Complete'), 5000);
signal.addEventListener('abort', () => {
clearTimeout(timeout);
reject(new Error('Task Cancelled'));
});
});
}
// Trigger cancellation after 1 second
setTimeout(() => controller.abort(), 1000);
performTask(signal)
.then(console.log)
.catch(err => console.error(err.message));
Erklärung
1
const controller = new AbortController();
Erstellt eine Instanz, um den Abbruchprozess zu steuern.
2
signal.addEventListener('abort', ...)
Wartet auf das Signal zum Abbrechen und führt die Bereinigungslogik aus.