javascript / expert
Snippet
Explizite Ressourcenverwaltung mittels Symbol.asyncDispose in benutzerdefinierten Svelte-Aktionen
Integriert das explizite Ressourcenmanagement von JavaScript (Symbol.asyncDispose) in den Lebenszyklus von Svelte-Knotenaktionen. Wenn der verbundene DOM-Knoten entfernt wird, bereinigt die destroy-Methode der Aktion externe Verbindungen wie WebSockets oder Web Worker asynchron.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
export function asyncDisposableAction(node, asyncResourceFactory) {let resource;(async () => {resource = await asyncResourceFactory(node);})();return {async destroy() {if (resource && typeof resource[Symbol.asyncDispose] === 'function') {await resource[Symbol.asyncDispose]();} else if (resource?.close) {await resource.close();}}};}
svelte
Erklärung
1
export function asyncDisposableAction(node, asyncResourceFactory) {
Deklariert eine benutzerdefinierte Svelte-Aktion mit DOM-Knoten und asynchroner Factory.
2
resource = await asyncResourceFactory(node);
Initialisiert die an den DOM-Knoten gebundene Ressource asynchron.
3
async destroy() {
Svelte-Lebenszyklus-Callback, der beim Entfernen des Knotens aus dem DOM aufgerufen wird.
4
if (resource && typeof resource[Symbol.asyncDispose] === 'function') {
Prüft, ob die Ressource das Standard-ES-Interface für asynchrones Aufräumen implementiert.
5
await resource[Symbol.asyncDispose]();
Führt den asynchronen Bereinigungsmechanismus der Ressource aus.