2017-04-09 15 views
-1

URLからいくつかのJSONデータを収集しようとしていて、Node.jsアプリケーション全体でデータを使用したいと思っています。以下のコードでは、JSONは正しく収集されていますが、変数partOfJsonは未定義として戻ってきます。私はそれが終わる前に、関数getTheDataがtheDataを返すからだと思います。Node.jsの変数を返す

function getTheData() { 

    const request = require('request'),url = 'myURL'; 

    request(url, (error, response, body)=> { 
      var theData = JSON.parse(body); 
    }); 

    //Do stuff with theData 

    return theData; 
}; 




//Somewere else 
var partOfJson = getTheData(); //I want partOfJson to be parts of the collected JSON 

これを解決する方法は誰にも分かりますか?私はNode.jsについて学び始めましたので、簡単に私に行ってください。

+0

ちょうどあなたが "var theData =" – Borjante

+0

を割り当てているところに戻り値を追加するこの質問は約100回聞かれました。あなたはまだ来ていないデータを返すことはできません。また、node.jsとは何の関係もありません。 –

答えて

-1

はい、非同期性のため、コールバックを使用してコールバックにtheDataを返すか、または約束を使用して値を取得できます。コールバックの

function getTheData(cb){ 
       //get data from your url and store it in theData variable 
       cb(theData) 
       } 

、あなたは以下のように関数を呼び出すことによってそれにアクセスすることができます

getTheData(function(data){ 
      partOfJson=data 
      } 

partOfJsonが未定義されることはありません。この方法を

またはあなたが行くことができます約束して、ここにあなたを始めるためのリンクです https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise