Как заставить конец Response () ExpressJS, простым способом? (NodeJS) - PullRequest
1 голос
/ 31 марта 2020

Как мне этого добиться. В простой способ в ExpressJS?

App.get("/", async (req, res, next) => {
  await something.catch(err => {
    res.status(500).json("something wrong")
  })

  if (res.headersSent) return;
  res.json("2st response");
});

Могу ли я просто вызвать res. json () два раза, а затем express автоматически понять, что нужно завершить ответ, а не отправлять второй ответ? без использования промежуточного программного обеспечения, чтобы проверить, что ответ уже отправлено или нет!

Ответы [ 2 ]

1 голос
/ 31 марта 2020

В вашей логике c здесь с await проще просто использовать try/catch вместо .catch(), и это значительно упрощает процесс:

App.get("/", async (req, res, next) => {
  try {
      await something;
  } catch(err) {
      res.status(500).json("something wrong");
      return;
  });

  res.json("2st response");
});

В общем, вы не смешивайте await с .catch() и частично по этой причине, потому что использование await и try/catch упрощает выполнение кода следующим образом: вы напрямую возвращаетесь из внешней функции в операторе try/catch(err), но вы не можете сделать что в .catch() заявлении.

0 голосов
/ 31 марта 2020

Вы можете использовать return до res.send. Таким образом, он отправит ответ и выйдет из функции.

app.get("/", (req, res, next) => {
  return res.send("1st responce");

  // Unreachable code
  if(res.headersSent) return;
  res.json("2st responce")
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...