You need to enable JavaScript to run this app. JS调用API开发Jeopardy项目时categories字段读值异常导致表头渲染失败
优惠活动
大模型
产品
解决方案
定价
更多

JS调用API开发Jeopardy项目时categories字段读值异常导致表头渲染失败

问题根因
  • 核心触发点是异步执行时序错乱:setupAndStart中使用forEach遍历执行异步的getCategory请求,forEach本身不会等待内部异步操作完成,循环结束后立刻触发fillTable()执行。
  • 此时全局categories数组还处于空状态,遍历取值时自然会返回undefined。你控制台打印能看到完整数组结构,是因为浏览器对类对象的控制台打印是实时引用快照,等你点开控制台查看时,之前的异步接口请求早就完成、数据已经写入categories了,这根本不是fillTable执行瞬间的数组状态。
  • 存在隐藏的代码隐患:getCategory函数内的cluesArr没有加变量声明,会直接挂载到全局作用域,容易引发不可预期的变量覆盖问题。
修复步骤
  • 替换掉无法阻塞异步的forEach写法,用Promise.all等待所有分类数据请求完成、categories填充完毕后再执行表格渲染:
    async function setupAndStart() {
      let myIds = await getCategoryIds();
      // 等待所有分类数据请求全部完成
      await Promise.all(myIds.map(id => getCategory(id)))
      fillTable();
    }
    
  • 补上getCategory里的变量声明,避免全局污染:将cluesArr = []; 修改为let cluesArr = [];
  • 打开fillTable中被注释的表头赋值逻辑,替换原来写死的占位文本:
    // 原写死的占位:newth.innerText = "Category" + i;
    newth.innerText = categories[i].title;
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.07 03:45:04