javascript / expert
Snippet
Funktionale Pipeline-Komposition höherer Ordnung für Anforderungskontexte
Implementiert eine funktionale Middleware-Kompositions-Engine nach dem Onion-Prinzip mittels Closures und Index-Prüfungen zur sequenziellen Verarbeitung von Anforderungskontexten.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
export function composeMiddleware(...middlewares) {return function (context) {let index = -1;function dispatch(i) {if (i <= index) throw new Error('next() called multiple times in middleware');index = i;const fn = middlewares[i];if (!fn) return context;return fn(context, function next() {return dispatch(i + 1);});}return dispatch(0);};}
nextjs
Erklärung
1
if (i <= index) throw new Error('next() called multiple times in middleware');
Schützt vor unzulässigen Mehrfachaufrufen der next-Fortsetzungsfunktion innerhalb eines einzelnen Middleware-Schritts.
2
const fn = middlewares[i];
Liest die aktuelle Middleware-Funktion anhand des Dispatch-Zeiger-Indexes aus.
3
return fn(context, function next() { return dispatch(i + 1); });
Führt den aktuellen Schritt aus und übergibt den Kontext sowie den next-Fortsetzungs-Callback.