私は範囲
function parseLink(link) {
var product;
request(link, function (error, response, body) {
if (!error && response.statusCode == 200) {
var $ = cheerio.load(body);
// title
var title = $('h1').text();
if (!title)
var title = $('title').text();
var description = $('meta[name="description"]').attr('content');
product = new Product(link.trim(), title.trim(), description.trim());
}
});
console.log(product);
return product;
}
この機能を持っていると私はにconsole.log(製品)要求コールの外側を行うときに、私が持っている理由を私は理解していません未定義でも、私の商品を見ることができます。
私はJavaScriptのスコープについてたくさんのことを学びますが、私は理解しません。私はの製品をトップファンクションに定義しました。 私はこの変数を別の関数で取得するために返す必要があります。リクエスト内でリターンを返す場合は、もちろん未定義ですので、外出する必要があります。
あなたがトップ機能であなたの変数 'product'に値と'にconsole.logを割り当てていなかったので() '要求機能からの割り当てを待っていません。 – hhh
[非同期呼び出しから応答を返すにはどうすればよいですか?](http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) –
'request'関数はどこに定義されていますか? –