在邮件中等待请求

问题描述

我如何等待这个 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)
    })
})