JavaScript调用News API Promise无法获取文章属性的技术求助
解决Promise链中获取新闻头条作者属性的问题
我来帮你梳理下问题根源,再给出针对性的修复方案:
核心问题分析
你的代码有两个关键错误导致无法正确获取第一篇文章的author属性:
- Promise链的数据传递断裂:第二个
.then(({articles}) => console.log(articles))里仅执行了打印操作,而console.log()本身没有返回值,所以后续的.then()接收到的是undefined,自然无法访问任何属性。 - 数组访问语法错误:最后一行的
["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
相关产品推荐
相关产品推荐

