Express异步中间件

时间:2019-05-10 14:10:14

标签: javascript node.js

我们知道,Express在处理异步功能方面不是很好,特别是在错误处理方面。

我确实定义了asyncMiddleware如下:

const asyncMiddleware = fn => (req, res, next) => {
  Promise.resolve(fn(req, res, next)).catch(next);
};

然后:

router.get('/', asyncMiddleware(myRouteHandler))

是否有一种方法可以正确地重写中间件,以使其可以直接由Express路由器使用?

 router.use(asyncMiddleware)

1 个答案:

答案 0 :(得分:1)

Koa本机支持诺言,预计Express 5也将做到这一点。

  

是否有一种方法可以正确地重写中间件,以使其可以直接由Express路由器使用?

没有办法。为了做到这一点,应该对使用中间件和路由处理程序的Express approuterexpress.Routerexpress.Route类)方法进行修补,以完成{{1 }}。

否则,基于承诺的中间件应使用asyncMiddleware之类的帮助程序进行手动包装。