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
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 secondsetTimeout(() => 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.