2017-04-09 125 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

此问题已被问及约一百次。你还不能返回尚未发布的数据,它也没有任何关于node.js的事情。 – 2017-04-09 13:02:22

回答

-1

是的,这是因为异步性质,您可以使用回调并在回调中返回theData,或者您可以使用promise来获取值。

回调:

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