在Express.js中发出请求和响应处理程序会导致问题吗?

时间:2019-01-25 03:23:15

标签: node.js express

我对Express应用程序中的设计模式有疑问, 因此,我将控制器包装在try and catch中,并且catch方法从控制器发出(req,res)处理程序,稍后将由将响应发送回客户端的函数处理。 代码或多或少是这样的:

const errorExceptionHandler = fn => (req, res, next) => {
  fn(req, res, next).catch((err) => {
    emitter.emit('onControllerError', {
      err: err,
      req: req,
      res: res,
      next: next
    })
  })
}

上面的代码表示req,res和next,表示提供的默认参数。

emitter.on('onControllerError', params => {
  const err = params.err
  const req = params.req
  const res = params.res
  const next = params.next

  if (!res.headerSent) {
    res.send({
      status: 500,
      url: process.env.DEBUG ? req.url : undefined,
      message: process.env.DEBUG ? err.message : "Something went wrong!"
    })
  }
})

和上面是'onControllerError'事件的处理方式,我担心的是,如果流量增加,这会在以后引起麻烦吗?还是会向客户发送错误的回复?

1 个答案:

答案 0 :(得分:1)

此处的流量增加无关紧要,因为每个请求仍将独立处理,另外所有必需的数据都直接传递给事件处理程序。

所以不,根据您的代码,我无法想到它开始失败的任何原因。