Будет ли вызывать обработчик запросов и ответов в Express.js проблемы? - PullRequest
0 голосов
/ 25 января 2019

У меня есть сомнения в моем шаблоне дизайна в моем приложении Express, поэтому я обертываю свой контроллер в try и 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
    })
  })
}

код, приведенный выше: ret, 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 голосов
/ 25 января 2019

Увеличенный трафик здесь не имеет значения, поскольку каждый запрос по-прежнему обрабатывается независимо, плюс все необходимые данные передаются непосредственно в обработчик событий.

Так что нет, основываясь на вашем коде, я не могу придумать ни одной причины, по которой он может потерпеть неудачу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...