Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中将API数据分配给变量_Javascript_Json_Reactjs_Api - Fatal编程技术网

在Javascript中将API数据分配给变量

在Javascript中将API数据分配给变量,javascript,json,reactjs,api,Javascript,Json,Reactjs,Api,我是javascript新手,我正在尝试使用React/Node.js对股票价格进行一些API调用。我已经知道了如何获取所需的数据,但似乎无法将其分配给对象(?)以将数据转换为可用格式 我的代码如下所示: const alpha=require('alphavantage')({key:'myapikey'}); //声明变量 让我们收集数据; //获取API数据 alpha.data.daily('msft','compact') .then(data=>{polishedata=alpha.

我是javascript新手,我正在尝试使用React/Node.js对股票价格进行一些API调用。我已经知道了如何获取所需的数据,但似乎无法将其分配给对象(?)以将数据转换为可用格式

我的代码如下所示:

const alpha=require('alphavantage')({key:'myapikey'});
//声明变量
让我们收集数据;
//获取API数据
alpha.data.daily('msft','compact')
.then(data=>{polishedata=alpha.util.polish(data)['data']});
console.log(数据);//返回未定义的
api返回一个承诺,其中包含json格式的数据:

{
  '2019-11-25T00:00:00.000Z': {
    open: '262.7100',
    high: '266.4400',
    low: '262.5200',
    close: '266.3700',
    volume: '19242309'
  },
  ...
}
登录到控制台可以很好地显示数据,因此我知道至少这部分工作正常

我试着在前面添加
var somedata=
,或者链接
,然后(data=>{returndata})(显然不使用
console.log()
),但它不起作用

如何将其分配给变量,以便将数据处理为图形包的可用格式?如果这是个愚蠢的问题,我很抱歉,但我不知所措


更新:添加了下面建议的更改。

您可以在api调用之外声明一个变量,并在变量可用时为其分配
数据值

// Declare a variable here.
let allData;

// Get API data
alpha.data.daily('msft', 'compact')
    .then(data => {allData = alpha.util.polish(data))['data']});
如果使用React,则存储此数据的常见位置是
state

 constructor(props) {
    super(props);
    this.state = {data: []};
 }
然后使用
setState
设置API调用的承诺何时得到解决:

// Get API data
alpha.data.daily('msft', 'compact')
    .then(data => {this.setState(data: alpha.util.polish(data))['data']}));

谢谢我实现了更改,但是如果我尝试记录
allData
变量,仍然会得到
undefined
。我已经用一个示例更新了主要帖子,说明了当我只登录到控制台时数据的样子(如果有帮助的话)。感谢您在React组件中包含如何实现它!你的代码是如何构造的?你能用这些变化来更新代码吗?我已经用代码更新了主帖,实际上只是那几行代码试图找出如何提取数据。但是,我想我已经找到了答案,因为这可能是由于javascript(?)的非同步性,所以在数据准备好之前调用
console.log()
?我还尝试链接另一个
。然后(console.log(polishedata))在最后,但它不起作用。可能登录到控制台不合适,我只是非常习惯使用
print
语句进行调试。@dbm您是正确的,
console.log
是在承诺得到解决之前执行的,这意味着日志是在'polishedata'得到其最终值之前打印的。如果您使用
.then(()=>console.log(polishedata)
,它应该正确地记录。是的,这就成功了。谢谢!我将对此进行更多的研究。