JS调用名言接口打印作者和名言内容代码不生效如何解决?
接口打印功能问题排查
- 核心触发问题:你当前的代码仅完成了两个功能函数的定义,没有主动执行入口函数
showJokes(),这是绝大多数情况下代码无任何输出的直接原因,只需要在代码末尾添加一行showJokes()即可触发请求和打印逻辑。 - 现有代码的冗余写法修正:你在
forEach循环内写的return没有实际作用,forEach方法不接收回调函数的返回值,直接调用showAllJokes方法即可,虽然不会影响打印功能但属于不规范写法。 - 建议添加错误捕获逻辑:当前代码没有请求异常、数据解析异常的捕获分支,一旦接口下线、跨域或返回格式异常,你无法拿到报错信息定位问题,建议补充
catch错误处理分支。
修复后的完整代码如下:
const showJokes = () => { return fetch("https://quote-garden.herokuapp.com/api/v3/quotes") .then(response => { // 先判断请求状态是否正常 if (!response.ok) throw new Error('接口请求异常') return response.json() }) .then(data => { data.data.forEach(message => { let author = message.quoteAuthor; let quote = message.quoteText; showAllJokes(`${author} - ${quote}`) }) }) .catch(err => { // 捕获全链路错误方便排查 console.error('运行出错:', err) }) } function showAllJokes(fullName) { console.log(fullName); } // 主动调用入口函数触发逻辑 showJokes()
如果添加调用逻辑后还是无法运行,可以打开浏览器开发者工具的Console面板查看报错信息,优先检查网络请求是否正常,该公共接口可能存在限流、下线或者跨域限制。
内容的提问来源于stack exchange,提问作者Mulu Mekuriya
相关产品推荐
相关产品推荐

