Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.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中提取数据?_Javascript_Promise - Fatal编程技术网

如何从已解析的javascript中提取数据?

如何从已解析的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(); 返回说唱; }); 函数数据(){

我正试图从NewsAPI中提取数据——我从API中得到的结果是一个已解决的承诺,我不知道如何访问其中的对象

//示例代码
让我们说唱;
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中看到的,您肯定得到了数据。也许您只需要从
    generateData
    函数返回它们?(我不能100%确定哪个日志显示了20篇文章的数组)。正如您在控制台中看到的,您肯定已经获得了数据。也许您只需要从
    generateData
    函数返回它们?(我不能100%确定哪个日志显示了20篇文章的数组)。