Simple asynchronous middleware pattern.
npm install throwback --save
Compose asynchronous (promise-returning) functions.
const { compose } = require("throwback");
const fn = compose([
async function(ctx, next) {
console.log(1);
try {
await next();
} catch (err) {
console.log("throwback", err);
}
console.log(4);
},
async function(ctx, next) {
console.log(2);
return next();
}
]);
// Callback runs at the end of the stack, before
// the middleware bubbles back to the beginning.
fn({}, function(ctx) {
console.log(3);
ctx.status = 404;
});
Tip: In development (NODE_ENV !== "production"
), compose
will throw errors when you do something unexpected. In production, the faster non-error code paths are used.
Build a micro HTTP server!
const { createServer } = require("http");
const finalhandler = require("finalhandler"); // Example only, not compatible with single `ctx` arg.
const { compose } = require("throwback");
const app = compose([
function({ req, res }, next) {
res.end("Hello world!");
}
]);
createServer(function(req, res) {
return app({ req, res }, finalhandler());
}).listen(3000);
Built for servie
and inspired by koa-compose
.
MIT