Отправить экспресс-ответ извне асинхронной функции - PullRequest
0 голосов
/ 29 апреля 2018

Существует функция (аналогичная setTimeout, которая работает асинхронно) вне экспресс-маршрута. В моем случае это функция, которая прослушивает события из SocketIO. Можно ли с него отправить ответ?

setTimeout(() => {
 res.send('Got it');
}, 1000)

app.get('/endpoint', (req, res) => {
   // wait for event 'res' from setTimout
});

1 Ответ

0 голосов
/ 29 апреля 2018

Если вы просто хотите отправить ответ от другой функции, вы можете просто передать ей res для отправки ответа.

Если вам нужно выполнить больше работы на маршруте, но только после того, как другая функция отправит ответ (почему?), Вы можете изменить его, чтобы он возвращал обещание:

const someFunction = res =>
  new Promise((resolve) => {
    setTimeout(() => {
      res.send('Got it');
      resolve();
    }, 1000);
  });

app.get('/endpoint', async (req, res) => {
  await someFunction(res);
  console.log('this will only be called after res sent');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...