javascript / expert
Snippet
Manuelle Kontext-Verfolgung mit AsyncResource
Während AsyncLocalStorage der Standard für Kontext ist, bietet AsyncResource eine Low-Level-Steuerung für die manuelle Kontext-Weitergabe. Dies ist essenziell bei der Integration von Legacy-Bibliotheken oder ereignisgesteuerten Systemen, bei denen der Ausführungsfluss den asynchronen Kontext nicht automatisch beibehält.
snippet.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import { AsyncResource } from 'node:async_hooks';class DatabaseQuery extends AsyncResource {constructor(queryId) {super('DB_QUERY');this.queryId = queryId;}run(callback) {this.runInAsyncScope(callback);}}const query = new DatabaseQuery('req-123');query.run(() => {// Async context is now preserved even through legacy callbacks});
nodejs
Erklärung
1
super('DB_QUERY')
Initialisiert die asynchrone Ressource mit einem benutzerdefinierten Typ für Monitoring und Debugging.
2
this.runInAsyncScope(callback)
Führt den Callback innerhalb des asynchronen Kontexts aus, der dieser spezifischen Ressourceninstanz zugeordnet ist.