我正在尝试在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;
});
});
答案 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