javascript / intermediate
Snippet
Anfrage-Verfolgung mit AsyncLocalStorage
AsyncLocalStorage bewahrt den Status über asynchrone Aufrufketten hinweg. In Node.js wird dies häufig verwendet, um anfragespezifischen Kontext wie Correlation-IDs zu speichern, ohne sie durch jede Funktion zu reichen.
snippet.js
1
2
3
4
5
6
7
8
9
10
11
12
import { AsyncLocalStorage } from 'node:async_hooks';const storage = new AsyncLocalStorage();function logWithId(msg) {const id = storage.getStore()?.requestId;console.log(`[${id || 'N/A'}] ${msg}`);}storage.run({ requestId: 'abc-123' }, () => {setTimeout(() => logWithId('Finished processing'), 100);});
nodejs
Erklärung
1
storage.run(context, callback)
Setzt den Kontext für die Dauer des Callbacks, einschließlich darin enthaltener asynchroner Schritte.
2
storage.getStore()
Ruft den aktuellen Speicher ab, der mit dem Ausführungskontext verknüpft ist.