显示等待动画:在 await fetch 期间提升用户体验


显示等待动画:在 await fetch 期间提升用户体验

本文介绍如何在 J*aScript 的 `await fetch` 调用期间显示等待动画,以阻塞用户交互并提供更好的用户体验。通过添加一个全屏覆盖层,并在 API 请求开始和结束时控制其显示和隐藏,可以有效地实现等待动画效果,防止用户在数据加载期间进行误操作。

在进行网络请求时,特别是使用 await fetch 等待响应时,如果请求时间较长,用户可能会感到困惑,甚至重复点击按钮,导致不必要的错误或请求。为了提升用户体验,可以在请求期间显示一个等待动画,告知用户程序正在处理中,并阻止进一步的交互。

以下是如何实现这一目标的步骤:

1. 创建全屏覆盖层(Loading 动画容器)

首先,在 HTML 中添加一个 div 元素,用于作为等待动画的容器。这个 div 将覆盖整个页面,并包含等待动画的视觉元素(例如,旋转的图标、文字提示等)。

<div id="loading" style="position: fixed; z-index: 1000; width: 100vw; height: 100vh; top: 0; left: 0; display: flex; justify-content: center; align-items: center; background-color: rgba(0, 0, 0, 0.5); display: none;">
   <span>加载中...</span>
   <!-- Loading spinner goes here (可以使用 CSS 或第三方库实现) -->
</div>
  • position: fixed: 确保 div 始终位于视口中,不会随页面滚动而移动。
  • z-index: 1000: 确保 div 位于所有其他元素的上方。
  • width: 100vw; height: 100vh: 使 div 覆盖整个视口。
  • top: 0; left: 0: 将 div 定位到视口的左上角。
  • display: flex; justify-content: center; align-items: center: 使 div 的内容(例如,"加载中..." 文字)居中显示。
  • background-color: rgba(0, 0, 0, 0.5): 添加一个半透明的背景,以使等待动画更突出。
  • display: none: 默认情况下,隐藏 div。

2. 显示和隐藏覆盖层

接下来,使用 J*aScript 在 fetch 请求开始之前显示覆盖层,并在请求完成之后隐藏覆盖层。

SONIFY.io SONIFY.io

设计和开发音频优先的产品和数据驱动的解决方案

SONIFY.io 75 查看详情 SONIFY.io
async function refreshStatus(mode) {
    // 显示等待动画
    document.getElementById("loading").style.display = "flex";

    try {
        var response = await fetch(
            the_url,
            {
                method: 'POST',
                headers: {
                    'Accept': 'application/json',
                    'Content-Type': 'application/json',
                    'Access-Control-Allow-Origin': '*',
                },
                body: JSON.stringify(dict)
            }
        );

        const jdata = await response.json();
        ldata = jdata["results_list"];

    } catch (error) {
        console.error("请求失败:", error);
        // 处理错误,例如显示错误消息
    } finally {
        // 隐藏等待动画
        document.getElementById("loading").style.display = "none";
    }
}
  • document.getElementById("loading").style.display = "flex";: 将 display 属性设置为 flex,以显示覆盖层。 使用 flex 可以保证其内部元素(如“加载中...”文字)的居中显示。 如果覆盖层内部没有需要居中的元素,也可以设置为 block。
  • document.getElementById("loading").style.display = "none";: 将 display 属性设置为 none,以隐藏覆盖层。
  • try...catch...finally: 使用 try...catch 块来捕获 fetch 请求可能发生的错误。 finally 块确保无论请求成功还是失败,等待动画都会被隐藏。

3. 添加 Loading 动画

仅仅显示 "加载中..." 文字可能不够吸引人。 可以使用 CSS 或第三方库来添加更复杂的 loading 动画。

  • CSS 动画: 可以使用 CSS keyframes 创建旋转的图标或其他动画效果,并将其添加到 loading div 中。
  • 第三方库: 有许多 J*aScript 库提供了各种各样的 loading 动画,例如 Spin.js, Ladda, 等。

示例:使用 CSS 创建简单的旋转动画

<div id="loading" style="position: fixed; z-index: 1000; width: 100vw; height: 100vh; top: 0; left: 0; display: flex; justify-content: center; align-items: center; background-color: rgba(0, 0, 0, 0.5); display: none;">
   <div class="spinner"></div>
   <span>加载中...</span>
</div>

<style>
.spinner {
  border: 5px solid rgba(255, 255, 255, 0.3);
  border-radius: 50%;
  border-top: 5px solid #fff;
  width: 50px;
  height: 50px;
  animation: spin 2s linear infinite;
}

@keyframes spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}
</style>

注意事项

  • 避免阻塞主线程: 确保 loading 动画的实现不会阻塞 J*aScript 的主线程,否则可能会导致页面卡顿。
  • 优化性能: 对于复杂的 loading 动画,需要注意性能优化,避免过度消耗 CPU 资源。
  • 用户体验: loading 动画的设计应简洁明了,避免过于花哨或分散用户的注意力。
  • 错误处理: 在 catch 块中处理 fetch 请求可能发生的错误,并向用户显示友好的错误消息。

总结

通过使用全屏覆盖层和 J*aScript 控制其显示和隐藏,可以轻松地在 await fetch 调用期间显示等待动画,提升用户体验。 选择合适的 loading 动画效果,并注意性能优化和错误处理,可以使你的应用程序更加专业和用户友好。

以上就是显示等待动画:在 await fetch 期间提升用户体验的详细内容,更多请关注其它相关文章!


# 并在  # 土猪营销推广方案  # 会被百度收录的推广网站  # 河北区网站建设企业推荐  # 广西正规的网站优化  # 邯郸网站推广和内容  # 重庆网站建设的知识产权  # 恩平网站建设设计公司  # 亳州营销推广怎么收费  # 黔西网站关键词优化公司  # 网站上线推广什么意思呀  # 中文网  # 有许多  # 相关文章  # 可能发生  # css  # 全屏  # 设置为  # 第三方  # 可以使用  # 加载中  # ai  # access  # app  # go  # json  # js  # html  # java  # javascript 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: 从HTML表单获取逗号分隔值并转换为NumPy数组进行预测  QQ网页版入口导航 QQ网页版在线访问通道  谷歌浏览器官网地址整理_谷歌浏览器新版直连2026稳定访问  vivo浏览器怎么离线保存网页 vivo浏览器下载完整页面以便无网络时阅读  使用Python和GBGB API高效抓取指定日期范围和赛道比赛结果教程  百度识图图像分析 百度识图识别平台  《大润发优鲜》充值方法介绍  告别阻塞等待:如何使用GuzzlePromises优雅处理PHP异步操作,提升应用响应速度  《幻兽帕鲁》手游帕鲁捕捉技巧分享  美发店速赢秘籍  J*a中逻辑运算符如何使用_逻辑与或非的基础用法讲解  HTML与J*aScript实现下拉菜单驱动的动态表格:构建交互式维修表单  如何自定义苹果手机铃声  海棠书屋官方在线书籍入口 海棠书屋文学作品浏览官网链接  Python自动化抓取GBGB赛狗比赛结果:日期范围与赛道筛选教程  荣耀 Magic10 Pro 系统更新提示失败_荣耀 Magic10 Pro 升级修复  除了Copilot,还有哪些值得一试的VS Code AI插件?  键盘测试软件哪个好_键盘故障检测工具推荐  PySimpleGUI中实现键盘按键与按钮事件绑定教程  芒果TV官网登录入口 芒果TV官方网站登录入口  J*a实现任务清单管理_集合框架综合入门练手  wps文字怎么设置文字环绕图片的方式_wps文字如何设置文字环绕图片方式  荣耀Magic7拍照夜景噪点处理_荣耀Magic7相机优化  苹果电脑如何快速查看电池状态 苹果电脑电池信息快捷方法  申通快递查询 申通物流快递单实时查询入口  如何定制PrimeNG Sidebar的背景颜色  edge浏览器怎么修改语言为中文_Edge界面语言切换教程  抖音作品被限流怎么办 抖音内容优化与流量恢复方法  如何用mysql实现客户反馈管理_mysql客户反馈数据库方法  Animex动漫社正版在线入口 Animex动漫社动漫官方观看网  windows10怎么开启wsl_windows10安装linux子系统教程  江苏大剧院会员卡购买步骤  《土豆雅思》修改密码方法  使用Google服务账号实现Google Drive API无缝集成与文件访问  动漫之家观看全集库 动漫之家免费资源网地址  如何查询国外邮政编码_国外邮政编码查询的多种有效途径  如何取消数字签名  Windows 11怎么删除恢复分区_Windows 11使用Diskpart命令强行删除分区  食品生产用水只要符合国家规定的生活饮用水卫生标准就可以吗  韩剧圈正版官网入口_韩剧圈官方指定登录  包子漫画在线观看入口 包子漫画网正版全集链接  Yandex世界探索 最新官方免登录入口全知道  《全民k歌》网页版最新登录入口一览  在React中正确处理HTML input type="number"的数值类型  猫眼电影app如何参与官方的抽奖活动_猫眼电影官方抽奖参与方法  汽水音乐在线入口 汽水音乐网页端官方页面快速打开  使用AI在VS Code中将代码从一种语言翻译成另一种  咸鱼怎么设置仅粉丝可见的动态_咸鱼动态粉丝可见设置方法  realme 10 Pro息屏方案_realme 10 Pro省电策略  百度地图离线地图无法加载如何解决 百度地图离线地图加载优化方法 

 2025-10-18

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.