0 Tage Serie
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
javascript
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.