Skip to content

Instantly share code, notes, and snippets.

@mosson
Created January 24, 2017 01:55
Show Gist options
  • Save mosson/e7601e7f1cd23189a5214dcf3706ba7b to your computer and use it in GitHub Desktop.
Save mosson/e7601e7f1cd23189a5214dcf3706ba7b to your computer and use it in GitHub Desktop.
middleware pattern practice.
function requestIDMiddleware(next, params) {
var requestID = 'hogehoge';
if(next) next({
requestID: requestID
});
}
function sessionMiddleware(next, params) {
var session = {
user_id: 123
};
var params = Object.assign(
params,
{session: session}
);
if(next) next(params);
}
function renderer(params) {
console.log(
'Hello, World.',
'Your Sesssion is ', params.session,
'Your RequestID is ', params.requestID
);
}
class Middleware {
constructor() {
this.queue = [];
}
register(middleware) {
this.queue.push(middleware);
}
run() {
this.queue.reverse().reduce((memo, fn) => {
if(!memo) return fn;
return fn.bind(this, memo);
})({});
}
}
var middleware = new Middleware();
middleware.register(requestIDMiddleware);
middleware.register(sessionMiddleware);
middleware.register(renderer);
middleware.run();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment