Node.js Get响应未初始化为局部变量

Node.js Get响应未初始化为局部变量,node.js,asynchronous,get,Node.js,Asynchronous,Get,我使用以下代码从我的android应用程序接收用户短信,并在向某个站点发出指定的get请求后将结果发送回用户。用户应该得到的预期输出是“感谢您的消息”+[get请求的响应]…我得到的是“感谢您未定义的消息”似乎是我的变量“body”未使用get响应初始化。请帮助 var express = require('express'); var app = express(); app.set('port', (process.env.PORT || 5000)); app.us

我使用以下代码从我的android应用程序接收用户短信,并在向某个站点发出指定的get请求后将结果发送回用户。用户应该得到的预期输出是“感谢您的消息”+[get请求的响应]…我得到的是“感谢您未定义的消息”似乎是我的变量“body”未使用get响应初始化。请帮助

   var express = require('express');
   var app = express();
   app.set('port', (process.env.PORT || 5000));
   app.use(express.static(__dirname + '/public'));

   app.get('/', function(request, response) {
  response.send('Hello Cruel World!');
});

var bodyParser = require('body-parser');

 var WEBHOOK_SECRET = "62DZWMCCFFHTTQ44CG3WUQ94CTT7GAAN";

 app.post('/telerivet/webhook', 
 bodyParser.urlencoded({ extended: true }),
 function(req, res) {
  var secret = req.body.secret;
  if (secret !== WEBHOOK_SECRET) {
      res.status(403).end();
      return;
  }

     if (req.body.event == 'incoming_message') {

    var content = req.body.content;
    var from_number = req.body.from_number;
    var phone_id = req.body.phone_id;
    var request = require("request");
    var body;
     request("http://www.google.com", function(error, response, data) {
   body = data;
   });
    // do something with the message, e.g. send an autoreply
    res.json({
         messages: [
        { content: "Thanks for your message! "  + body}
      ]
    });

  }  

  res.status(200).end();
 }
   );

app.listen(app.get('port'), function() {
 console.log('Node app is running on port', app.get('port'));
});

请帮助我解决问题。以我在此处指定的代码为例,此处发布的答案似乎不起作用…请在从
请求
回调之前执行res.json行,因此不会填充正文-更改如下:

request("http://www.google.com", function(error, response, data) {
    // do something with the message, e.g. send an autoreply
    res.json({
        messages: [
            { content: "Thanks for your message! "  + data}
        ]
    });
    res.status(200).end();
});

这确保了res.json在
request()

响应之后执行,谢谢兄弟,这正是我所需要的。。。!这种异步性给像我这样的业余爱好者带来了问题!ha@SheikhZayed欢迎对于node.js,了解异步方式非常重要,因为几乎所有事情都是异步的!当然,兄弟,请给我推荐一本好书,这将使我成为NodeJS的专家飞行员