【问题标题】:node.js request object- return response body for further operation [duplicate]node.js请求对象-返回响应主体以进行进一步操作[重复]
【发布时间】:2015-03-31 21:01:00
【问题描述】:

这可能有一个简单的答案,但我正在尝试取回响应的主体并返回到另一个函数。这当然是范围问题。

这是我的代码,任何想法都将不胜感激:

var request = require("request");
var myJSON = require("JSON");

function getMyBody(url) {
    var myBody;
    request({
    url: url,
    json: true
    }, function (error, response, body) {
        if (!error && response.statusCode === 200) {
        myBody = body;
    }
 });

return(JSON.parse(myBody));

}

js_traverse(getMyBody(url));

谢谢

格伦

【问题讨论】:

标签: javascript node.js request


【解决方案1】:

声明:

return(JSON.parse(myBody));

在 ajax 调用返回正文之前执行。您需要将回调传递给 getMyBody() 以处理 request() 的主体返回的内容:

var request = require("request");
var myJSON = require("JSON");

function getMyBody(url, callback) {
  request({
    url: url,
    json: true
  }, function (error, response, body) {
    if (error || response.statusCode !== 200) {
      return callback(error || {statusCode: response.statusCode});
    }
    callback(null, JSON.parse(body));  
  });
}

getMyBody(url, function(err, body) {
  if (err) {
    console.log(err);
  } else {
    js_traverse(body); 
  }
});

【讨论】:

  • 不需要在return callback(error) 中写返回,也不需要在成功时执行JSON.parse(body),而你说json: true ^^
  • @NoxFly 没有return,代码会继续执行下面的另一个回调语句
  • @NoxFly,以解决您评论的第二部分...您是对的,不需要 JSON.parse() 但这里的重点是回答如何在其中返回数据的问题一个异步调用,它被选择让其余代码保持原样。
猜你喜欢
  • 2016-09-12
  • 1970-01-01
  • 2019-11-25
  • 1970-01-01
  • 2014-01-25
  • 2016-08-18
  • 2011-11-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多