问题描述
我如何等待这个 nc.request
并发送结果
这是我的邮政编码
app.post('/sum',(req,res)=> {
let result
nc.request('my.request',{x: 2,y:3 },{max: 1},resp => {
console.log("Response from subscriber: " + resp)
result = resp
})
res.status(200).send(result)
})
解决方法
看起来您的 nc.request
回调中已经有了结果,因此您很可能可以从该回调中发送响应。
app.post('/sum',(req,res)=> {
nc.request('my.request',{x: 2,y:3 },{max: 1},resp => {
console.log("Response from subscriber: " + resp)
// Send here,since you have the response
res.status(200).send(resp)
})
})
但是,如果 nc.request
返回一个包含响应数据的 Promise,您可以在异步函数中等待它。
app.post('/sum',async (req,res,next)=> {
try {
const result = await nc.request('my.request',{max: 1})
console.log("Response from subscriber: " + result)
res.status(200).send(result)
}
catch (err) {
// Have express handle errors from the async function
next(err)
}
})
,
这样它应该可以工作:
app.post('/sum',res)=> {
let result = await nc.request('my.request',{max: 1});
res.status(200).send(result)
});
,
需要将res.status(200).send(resp)
移动到回调函数中,因为可以在回调函数内部得到请求的结果。
app.post('/sum',resp => {
console.log("Response from subscriber: " + resp)
res.status(200).send(resp)
})
})