【发布时间】:2017-04-21 09:24:46
【问题描述】:
我有一个 Express 路由处理程序,它需要异步启动多个操作。这些操作是独立的,互不干扰。 我尝试使用 Promises 执行此操作,但是当我必须处理来自 Promises 的错误时遇到了问题。
让我用一个例子来解释。
router.post('/data', function (req, res, next) {
// do something before anything else
next();
}, function (req, res, next) {
promise1(req.params)
.then((data) => {
// do something with data
}).catch((err) => {
next(err);
});
promise2(req.params)
.then((data) => {
// do something with data
}).catch((err) => {
next(err);
});
}, function (err, req, res, next) {
// error middleware
});
问题是如果两个promise都发生错误,他们最终都会在中间件中调用next(err),这里就有问题了。
对 next(err) 的第二次调用没有结果,中间件也不处理任何事情。
我正在寻找关于几件事的建议:
- 按顺序调用多个 Promise 是否是一种好的设计?
- 如果是,我应该如何处理错误?
- 如果不是,在这种情况下什么是好的设计模式?
tldr我必须在一个快速路由中运行多个独立的函数,我不知道如何处理可能的错误
【问题讨论】:
标签: node.js express error-handling middleware