web-dev-qa-db-ja.com

node.jsリクエストオブジェクト-さらなる操作のためのレスポンス本文を返します

おそらくこれには簡単な答えがありますが、私は応答の本文を取得して別の関数に返すようにしています。それは確かにスコープの問題です。

これが私のコードです、どんなアイデアでも最も高く評価されます:

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));

ありがとう

グレン

10
Glenn Dekhayser

ステートメント:

return(JSON.parse(myBody));

Ajax呼び出しが本体を返す前に実行されます。 request()の本体が返すものを処理するには、getMyBody()にコールバックを渡す必要があります。

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); 
  }
});
13
Ben