如何从已解析的javascript中提取数据?
我正试图从NewsAPI中提取数据——我从API中得到的结果是一个已解决的承诺,我不知道如何访问其中的对象如何从已解析的javascript中提取数据?,javascript,promise,Javascript,Promise,我正试图从NewsAPI中提取数据——我从API中得到的结果是一个已解决的承诺,我不知道如何访问其中的对象 //示例代码 让我们说唱; var url='1〕https://newsapi.org/v2/top-headlines?' + “类别=运动&”+ ‘q=猛禽&’+ 'apiKey=XXXXXXXXXXXXXXXXXXXXXX'; var req=新请求(url); 获取(请求) .然后(功能(响应){ raps=response.json(); 返回说唱; }); 函数数据(){
//示例代码
让我们说唱;
var url='1〕https://newsapi.org/v2/top-headlines?' +
“类别=运动&”+
‘q=猛禽&’+
'apiKey=XXXXXXXXXXXXXXXXXXXXXX';
var req=新请求(url);
获取(请求)
.然后(功能(响应){
raps=response.json();
返回说唱;
});
函数数据(){
如果(raps==未定义){
日志(“正在分析数据”)
}否则{
控制台日志(raps);
clearInterval(加载数据);
生成数据(raps);
}
}
const loadData=setInterval(数据,1000);
函数生成数据(raps){
让newData=raps.articles;
console.log(newData);
}
/////////////////示例代码结束
我得到的回报是:
承诺{:{…}
__承诺
[[PromiseStatus]]:“已解决”
[[PromiseValue]]:对象
文章:(20)[{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…},{…}]
状态:“ok”
totalResults:26
这应该可以
let raps;
var url = 'https://newsapi.org/v2/top-headlines?' +
'category=sports&' +
'q=raptors&' +
'apiKey=xxxxxxxxxxxxxxxxxxxxxxxxxx';
var req = new Request(url);
fetch(req)
.then(response => response.json())
.then((data) => {
raps = data;
});
function data () {
if(raps == undefined) {
console.log("Data is being parsed")
} else {
console.log(raps);
clearInterval(loadData);
generateData(raps);
}
}
const loadData = setInterval(data, 1000);
function generateData(raps) {
let newData = raps.articles;
console.log(newData);
}
这应该有用
let raps;
var url = 'https://newsapi.org/v2/top-headlines?' +
'category=sports&' +
'q=raptors&' +
'apiKey=xxxxxxxxxxxxxxxxxxxxxxxxxx';
var req = new Request(url);
fetch(req)
.then(response => response.json())
.then((data) => {
raps = data;
});
function data () {
if(raps == undefined) {
console.log("Data is being parsed")
} else {
console.log(raps);
clearInterval(loadData);
generateData(raps);
}
}
const loadData = setInterval(data, 1000);
function generateData(raps) {
let newData = raps.articles;
console.log(newData);
}
下面的工作是一次检索文章。您的目标似乎是每秒轮询服务器,但很容易调整。我使用了较新的
async/await
方法,将异步查询视为同步查询,使其更易于阅读和理解,但如果需要,您仍然可以使用fetch/then/catch
,同样,重构也不太困难
进一步解释我的代码
(async()=>{…})函数中代码>块
wait
基本上是指等待解决
。您可以看到,我等待fetch解析,然后等待响应json解析(这是您的解决方案中真正缺少的一点)//示例代码 (异步()=>{ 常量url=https://newsapi.org/v2/top-headlines?' + “类别=运动&”+ ‘q=猛禽&’+ 'apiKey=xxxxxxxxxxxxxxxxxxxxxx'; const response=等待获取(url); 设articles=null; if(response.ok){ const raps=wait response.json(); 物品=raps.物品; } 国际单项体育联合会(章程){ articles.forEach(article=>console.log(article)); }否则{ console.log(“无文章”); } })();
以下工作将检索文章一次。您的目标似乎是每秒轮询服务器,但很容易调整。我使用了较新的
/////////////////示例代码的末尾方法,将异步查询视为同步查询,使其更易于阅读和理解,但如果需要,您仍然可以使用async/await
,同样,重构也不太困难 进一步解释我的代码fetch/then/catch
(async()=>{…})函数中代码>块
wait
基本上是指等待解决
。您可以看到,我等待fetch解析,然后等待响应json解析(这是您的解决方案中真正缺少的一点)//示例代码 (异步()=>{ 常量url=https://newsapi.org/v2/top-headlines?' + “类别=运动&”+ ‘q=猛禽&’+ 'apiKey=xxxxxxxxxxxxxxxxxxxxxx'; const response=等待获取(url); 设articles=null; if(response.ok){ const raps=wait response.json(); 物品=raps.物品; } 国际单项体育联合会(章程){ articles.forEach(article=>console.log(article)); }否则{ console.log(“无文章”); } })();
正如您在console中看到的,您肯定得到了数据。也许您只需要从
/////////////////示例代码的末尾函数返回它们?(我不能100%确定哪个日志显示了20篇文章的数组)。正如您在控制台中看到的,您肯定已经获得了数据。也许您只需要从generateData
函数返回它们?(我不能100%确定哪个日志显示了20篇文章的数组)。generateData