express-wrap-async

1.0.3 • Public • Published

express-wrap-async

Build Status codecov

Usage

npm i --save express-wrap-async
import wrapAsync from 'express-wrap-async';

Promise example

function routePromise(req, res) {
  return new Promise((resolve) => {
    res.send({ ok: true });
    resolve();
  });
}
 
router.get('/promise', wrapAsync(routePromise));
 

Babel example:

const fakeWait = () => new Promise((resolve) => setTimeout(resolve, 100));
 
async function asyncRoute(req, res) {
  await fakeWait();
  res.send({ ok: true });
}
router.get('/async', wrapAsync(asyncRoute));

Multiple middlewares

const middlewares = [
  async(req, res, next) => {
    await fakeWait();
    next();
  },
  (req, res, next) => {
    // non async middleware will also work
    next();
  },
  asyncRoute,
];
 
router.get('/middlewares', wrapAsync(middlewares));

Error handling

async function errorRoute(req, res) {
  await fakeWait();
  throw new Error('unexpected error');
}
router.get('/standard', wrapAsync(errorRoute));
 
app.use((err, req, res, next) => {
  res.status(500);
  res.json({
    error: err.message,
  });
});
 

MIT License

Copyright (c) 2016 Łukasz Sentkiewicz

Package Sidebar

Install

npm i express-wrap-async

Weekly Downloads

109

Version

1.0.3

License

MIT

Last publish

Collaborators

  • lsentkiewicz