Javascript 从外部异步函数发送快速响应
在express route之外有一个函数(类似于异步工作的Javascript 从外部异步函数发送快速响应,javascript,node.js,express,asynchronous,Javascript,Node.js,Express,Asynchronous,在express route之外有一个函数(类似于异步工作的setTimeout)。在我的例子中,它是一个监听SocketIO事件的函数。有可能从它那里发送响应吗 setTimeout(() => { res.send('Got it'); }, 1000) app.get('/endpoint', (req, res) => { // wait for event 'res' from setTimout }); 如果您只想从另一个函数发送响应,您可以将res传递给它,
setTimeout
)。在我的例子中,它是一个监听SocketIO事件的函数。有可能从它那里发送响应吗
setTimeout(() => {
res.send('Got it');
}, 1000)
app.get('/endpoint', (req, res) => {
// wait for event 'res' from setTimout
});
如果您只想从另一个函数发送响应,您可以将
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');
});
我认为这在我的真实情况下是行不通的。请检查我的问题:您可以将
res
作为您的发射数据传递,然后让代码进入io。on
返回响应。我没有收到。请把它作为我尝试过的答案:io.emit('req',{data:test,res:res});但是给我一个最大的调用堆栈大小超过了日志记录来查看递归调用哪个函数。