nodejs POST请求的异步问题

时间:2016-09-04 10:04:53

标签: javascript node.js express callback promise

我正在尝试在Post Request中应用自定义函数,但它返回undefined。

我知道这是某种异步问题,我只是无法弄清楚可能出现的问题。

问题所在的代码块

simulation

整个代码

console.log(text); // <---- This shows correct value
A.prepare(function (text) { 
    console.log(text) // <---- This shows undefined
    B.write(text, function (response) {
        sendTextMessage(sender,response.message)
        return response.message;
    });
});

2 个答案:

答案 0 :(得分:1)

这是一个范围问题,而不是异步问题。

在第

A.prepare(function (text) {

text实际上是传递给函数的参数,并在函数内部使用。它不是指您在上面的行中记录的文本。

答案 1 :(得分:1)

更新

  

由于您要在text中访问undefined,因此callback function的值为text。   您还在callback function中提供了Priority always goes to local参数。 text这意味着每当您获得undefined的本地值时   text现在。   你必须改变其中一个变量名。

我已将text1更改为text1,现在您可以在callback function

中获得A.prepare()
  

如果你想在A.prepare(param1,param2,param3,...,function(text){ //Do your stuff }) 函数中传递变量,可以根据需要添加多个参数。

像这样:

app.post('/webhook/', function(req, res) {
    //  addPersistentMenu();
    let messaging_events = req.body.entry[0].messaging;
    for (let i = 0; i < messaging_events.length; i++) {
        let event = req.body.entry[0].messaging[i];
        let sender = event.sender.id;
        if (event.message && event.message.text) {
            let text1 = event.message.text;
            console.log(text1);
            A.prepare(function(text) {
                B.write(text1, function(response) {
                    sendTextMessage(sender, response.message)
                    return response.message;
                });
            });


        }
        if (event.postback) {
            let text = JSON.stringify(event.postback);
            sendTextMessage(sender, "Postback received: " + text.substring(0, 200));
            continue;
        }
    }
    res.sendStatus(200)
});

这是您更新的代码:

Person