在Javascript中将API数据分配给变量
我是javascript新手,我正在尝试使用React/Node.js对股票价格进行一些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.
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)
,它应该正确地记录。是的,这就成功了。谢谢!我将对此进行更多的研究。