You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript调用News API Promise无法获取文章属性的技术求助

解决Promise链中获取新闻头条作者属性的问题

我来帮你梳理下问题根源,再给出针对性的修复方案:

核心问题分析

你的代码有两个关键错误导致无法正确获取第一篇文章的author属性:

  1. Promise链的数据传递断裂:第二个.then(({articles}) => console.log(articles))里仅执行了打印操作,而console.log()本身没有返回值,所以后续的.then()接收到的是undefined,自然无法访问任何属性。
  2. 数组访问语法错误:最后一行的["0"].author完全不符合数组元素的访问逻辑,你要访问的是articles数组的第一个元素,正确写法应该是articles[0].author。

修复后的完整代码

function news09() {
  // 注意把URL里的&改成&,避免URL解析异常
  var url = 'https://newsapi.org/v2/top-headlines?' + 'country=us&' + 'apiKey=KEY';
  var req = new Request(url);
  console.log(req)
  fetch(req)
    .then(resp => resp.json())
    .then(({articles}) => {
      console.log(articles); // 先打印所有文章数据
      // 先判断数组是否有内容,避免空数组导致报错
      if (articles.length > 0) {
        console.log("第一篇文章作者:", articles[0].author);
      } else {
        console.log("未获取到任何新闻文章");
      }
      return articles; // 如果后续需要链式操作,记得返回数据保证传递
    });
}

额外优化提示

  • 一定要修正URL中的&为&,否则会被当作URL的无效参数部分,可能导致请求失败。
  • 增加数组长度判断是很有必要的,可以避免接口返回空数组时出现Cannot read properties of undefined的报错。
  • 如果需要在后续的.then()中继续处理文章数据,务必在当前.then()中返回articles,保证Promise链的数据传递连续性。

内容的提问来源于stack exchange,提问作者marsnebulasoup

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:29:20