2016-12-28 10 views
1

Node.jsのhttp.get機能で返す「未定義」

var exports = module.exports = {}; 
 
var http = require('http'); 
 

 
exports.get = function(key, app, vari) { 
 
    http.get('<url here>/?key='+key+'&app='+app+'&var='+vari+'&req=0', function (response) { 
 
     response.setEncoding('utf8'); 
 
     response.on('data', function(body) { 
 
      console.log(body); 
 
      return body; 
 
     }); 
 
    }); 
 
};

(上で見た)私のコードを出力コンソールへの応答をうまくしますが、輸出で機能を使用しようとすると何があっても「未定義」を返します。受信する応答は1行で、コンテンツタイプは "application/json"です。どうしたの? (そして、いや、それは "ここにURL" ではない、私はちょうど、プライバシー上の理由からURLを削除しました。それが助け場合、私はそれを提供することができます。)

+2

可能な重複http://stackoverflow.com/questions/14220321/how-do-i-return-the -response-from-as-asynchronous-call) – slebetman

答えて

0
exports.get = function(key, app, vari) { 

リターン

http.get('<url here>/?key='+key+'&app='+app+'&var='+vari+'&req=0', function (response) { 
     response.setEncoding('utf8'); 
     response.on('data', function(body) { 
      console.log(body); 
      return body; 
     }); 
    }); 
}; 
0

reference、あなたは終了イベントを聞いて、代わりに約束を返す必要があり、ちょうど好き:

var exports = module.exports = {}; 
var http = require('http'); 

exports.get = function(key, app, vari) { 
    return new Promise(function(resolve) { 
     http.get('<url here>/?  key='+key+'&app='+app+'&var='+vari+'&req=0', function (response) { 
     response.setEncoding('utf8'); 
     var data = ''; 
     response.on('data', function(chunk) { 
      console.log(chunk); 
      data += chunk; 
     }); 
     response.on('end', function() { 
      resolve(JSON.parse(data)); 
     }); 
    }); 
}) 

}

0

を私はちょうどね、それを考え出しました答えを求めるように編集しました。

var exports = module.exports = {}; 
 
var http = require('http'); 
 

 
exports.get = function(key, app, vari, answ) { 
 
http.get('http://<url here>/?key='+key+'&app='+app+'&var='+vari+'&req=0', function (response) { 
 
     response.setEncoding('utf8'); 
 
     response.on('data', function(body) { 
 
      answ(body); 
 
     }); 
 
    }); 
 
};

[私は非同期呼び出しからの応答を返すにはどうしますか?](の
関連する問題