我们知道,Express在处理异步功能方面不是很好,特别是在错误处理方面。
我确实定义了asyncMiddleware如下:
const asyncMiddleware = fn => (req, res, next) => {
Promise.resolve(fn(req, res, next)).catch(next);
};
然后:
router.get('/', asyncMiddleware(myRouteHandler))
是否有一种方法可以正确地重写中间件,以使其可以直接由Express路由器使用?
router.use(asyncMiddleware)
答案 0 :(得分:1)
Koa本机支持诺言,预计Express 5也将做到这一点。
是否有一种方法可以正确地重写中间件,以使其可以直接由Express路由器使用?
没有办法。为了做到这一点,应该对使用中间件和路由处理程序的Express app
和router
(express.Router
和express.Route
类)方法进行修补,以完成{{1 }}。
否则,基于承诺的中间件应使用asyncMiddleware
之类的帮助程序进行手动包装。