use async function or generator function with express
npm install express-modernuse async function or generator function with express





``js`
npm i express-modern --save
- normal handler app.get('/', modern((req, res, next) => { ... }))app.get('/', modern((err, req, res, next) => { ... }))
- error handler app.param('user', modern((req, res, next, user) => { ... }))
- param handler
`js`
const modern = require('express-modern')
`js
const app = express();
app.get('/', modern(function * (req, res, next) {
yield new Promise(r => setTimeout(r, 10));
res.send('generator function');
}));
const res = yield request(app)
.get('/')
.endAsync();
res.text.should.match(/generator/);
`
the generator function will be wrap via co.wrap. and the modern function
will take care of the arity of the handler. see http://expressjs.com/en/guide/error-handling.html
`js
const app = express();
app.get('/', modern(async function(req, res, next) {
await new Promise(r => setTimeout(r, 10));
res.send('async function');
}));
const res = yield request(app)
.get('/')
.endAsync();
res.text.should.match(/async/);
`
the async function will be called & the rejected value will be passed to next automatically
`js
const app = express();
app.get('/', modern((req, res, next) => {
res.send('normal function');
}));
const res = yield request(app)
.get('/')
.endAsync();
res.text.should.match(/normal/);
`
the modern` function does nothing on normal function.
the MIT License http://magicdawn.mit-license.org