node.jsで汎用的なhttp_requestするfunctionを作りたいと考えています。

npm install http-getを使い、URLの内容をhttp.getし、その取得結果を戻り値にして汎用的に使えるようにしたいと考えています。ただ初心者で下のプログラムでreturnの戻り値がundefineになっていて、ちょっと困っています。
理解してないので回避策がわかってないません。node.jsでfunctionの戻り値にURLのresponse結果を入れたい場合どうすればよろしいでしょうか。


var http = require('http-get');
var result = http_request('http://127.0.0.1:1234/');
console.log(result);


function http_request(urlstring){
var options = {url: urlstring};
http.get(options, function (error, result) {
if (error) {
console.error(error);
} else {
// console.log('The XML document contents: ' + result.buffer);
return result.buffer;
}
});
}

回答の条件
  • 1人50回まで
  • 登録:2012/05/16 21:12:42
  • 終了:2012/05/23 21:15:03

回答(2件)

id:tomoya61 No.1

tomoya61回答回数21ベストアンサー獲得回数02012/05/17 14:33:58

ポイント50pt

モウチョイ具体的にいえばわかる人がたくさんくると思います。

id:studio2021

具体的ではないかもしれませんがperlのLWP::Simple(http://www.augustus.to/blog/3128/archives/000054.html)みたいにURLを渡して、簡単にデータを取得できるhttp clientのfunctionを作りたいという意味合いです。

2012/05/17 17:18:49
id:Cherenkov No.2

Cherenkov回答回数1502ベストアンサー獲得回数4922012/05/18 01:21:40

ポイント50pt

undefinedになる原因はhttp.getの処理が非同期で進むので、console.logの時点で結果が得られていないからです。
async.jsのようなもので処理待ちすればいいと思います。

id:studio2021

まだ理解がおいついてなく、コードはかけてないですが、がんばってよんでみます。ありがとうございます。

2012/05/18 11:14:29

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません