在快速路线之外有一个功能(类似于setTimeout
,异步工作)。就我而言,它是一个侦听来自SocketIO的事件的函数。是否可以从中发送响应?
setTimeout(() => {
res.send('Got it');
}, 1000)
app.get('/endpoint', (req, res) => {
// wait for event 'res' from setTimout
});
答案 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');
});