从外部异步函数发送快速响应

时间:2018-04-29 16:13:12

标签: javascript node.js express asynchronous

在快速路线之外有一个功能(类似于setTimeout,异步工作)。就我而言,它是一个侦听来自SocketIO的事件的函数。是否可以从中发送响应?

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

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

1 个答案:

答案 0 :(得分:1)

如果您只想从其他功能发送回复,您只需将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');
});