node.js http请求问题

新手上路,请多包涵

为什么我页面第一次请求为空,第 二次请求才有数据
var express=require('express');
var http = require('https');
var app=express();
var options = {
host: 'api.douban.com',
path: '/v2/book/1220562'
};
var body = '';
var callback = function(response){

response.on('data', function(data) {

  body += data;

});

response.on('end', function() {

  console.log(body);

});
}
app.get('/',function(req,res){

var req1 = http.request(options, callback);
console.log('第一次请求'+body);
req1.end();
res.json(body);

});
var server = app.listen(8081, function () {

var host = server.address().address;
var port = server.address().port;
console.log("应用实例,访问地址为 http://%s:%s", host, port);

})

阅读 1.8k
1 个回答

异步的原因,你的 body 最开始定义为空,而 http.request 又是一个异步的过程,所以第一次请求时 request 的结果异步赋值给 body 这个过程还没结束,直接就返回了 body 初始定义的空字符串。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题