0 Tage Serie
javascript / expert
Snippet

Anfrage-Kontext via AsyncLocalStorage

AsyncLocalStorage bietet eine Möglichkeit, Daten über die gesamte Lebensdauer einer asynchronen Operation (wie einer HTTP-Anfrage) hinweg zu speichern. Es eliminiert 'Prop-Drilling', indem es Funktionen tief im Aufrufstapel ermöglicht, auf kontextspezifische Daten zuzugreifen, ohne dass diese explizit als Argument übergeben werden müssen.

snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
import { AsyncLocalStorage } from 'node:async_hooks';
const als = new AsyncLocalStorage();
function logWithId(msg) {
const id = als.getStore();
console.log(`[Request ${id}] ${msg}`);
}
als.run('REQ_123', () => {
setImmediate(() => logWithId('Finished processing'));
});
nodejs
Erklärung
1
als.run('REQ_123', () => { ... });
Startet einen asynchronen Scope, in dem der Wert 'REQ_123' mit allen verschachtelten Aufrufen verknüpft ist.
2
als.getStore();
Ruft den Wert ab, der mit dem aktuellen asynchronen Ausführungskontext verknüpft ist.