完善fetchAndDisplayUsers函数:API用户数据获取与展示实现
完善后的fetchAndDisplayUsers函数实现
我帮你调整了代码,完全贴合你提出的需求,同时修复了现有代码里的几个小问题(比如函数调用顺序、重复添加选项的问题),最终代码如下:
// 先声明全局users数组(确保后续操作有正确的数据源) let users = []; const displayUsers = (results) => { const selectItems = document.querySelector('.select-text'); // 先清空现有选项,避免重复添加用户 selectItems.innerHTML = ''; results.forEach(element => { console.log(element); const options = document.createElement("option"); options.textContent = element.name; options.value = element.id; selectItems.appendChild(options); }); }; const fetchAndDisplayUsers = () => { // 添加初始用户数据 users.push({ age: 40, weight: 75, height: 6, country: 'Nigeria', name: 'Charles Odili', id: 'dfhb454768DghtF' }); users.push({ age: 26, weight: 72, height: 6, country: 'Uganda', name: 'Peter Odili', id: 'gydf4' }); // 首次展示初始用户列表 displayUsers(users); // 声明API变量并赋值指定URL const api = 'https://randomapi.com/api/y1lfp11q?key=LEIX-GF3O-AG7I-6J84'; // 发起fetch请求并处理流程 fetch(api) // 将响应转为JSON格式 .then(response => response.json()) // 解构获取results,再提取第一个用户对象 .then(({ results }) => { const [user] = results; // 解构数组直接拿到第一个用户 users.push(user); // 将新用户添加到数组 // 传入包含新用户的内联数组调用displayUsers displayUsers([...users]); }) // 捕获并处理请求错误 .catch(error => { console.error('获取用户数据失败:', error); // 可选:添加用户友好的错误提示,比如alert('加载用户数据失败,请稍后重试') }); };
关键修改说明:
- 函数顺序调整:把
displayUsers放在fetchAndDisplayUsers之前,避免出现调用未定义函数的错误 - API变量配置:严格按照要求声明并赋值了指定的API地址
- fetch流程优化:
- 简化响应转JSON的写法,去掉冗余的
return - 用双层解构直接拿到API返回的第一个用户对象
- 按照要求将新用户加入数组,并通过
[...users]创建内联数组传入展示函数
- 简化响应转JSON的写法,去掉冗余的
- 错误处理:添加
.catch捕获请求过程中的网络错误或解析错误,便于调试和问题排查 - 重复渲染修复:在
displayUsers里先清空下拉框的现有选项,避免每次调用都重复添加相同用户
这样修改后,代码就能完整实现从API获取用户、更新列表并展示的功能,同时保证了代码的健壮性。
内容的提问来源于stack exchange,提问作者Mufasatoday
相关产品推荐
相关产品推荐

