javascript / expert
Snippet
Kontextsensitive Verfolgung mit AsyncLocalStorage
AsyncLocalStorage ermöglicht das Fortbestehen von Daten über asynchrone Grenzen hinweg, ohne manuelles 'Prop Drilling'. Es ist essenziell für die Verfolgung anforderungsspezifischer Metadaten (wie Correlation-IDs) in komplexen Node.js-Microservices.
snippet.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const { AsyncLocalStorage } = require('node:async_hooks');const storage = new AsyncLocalStorage();function logWithId(msg) {const id = storage.getStore()?.requestId || 'anonymous';console.log(`[${id}] ${msg}`);}function handleRequest(reqId) {storage.run({ requestId: reqId }, () => {setImmediate(() => logWithId('Processing complete'));});}handleRequest('req-123');
nodejs
Erklärung
1
const storage = new AsyncLocalStorage();
Initialisiert eine neue Storage-Instanz, um asynchronen Kontext zu halten.
2
storage.getStore()?.requestId
Ruft den aktuellen Kontext sicher aus der asynchronen Ausführungskette ab.
3
storage.run({ requestId: reqId }, () => { ... });
Führt einen Callback innerhalb eines Bereichs-Kontexts aus, der über verschachtelte asynchrone Aufrufe hinweg bestehen bleibt.