显示等待动画:在 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


相关推荐: 如何在CSS中使用伪类选择器_hover实现悬停效果  C++ static关键字作用_C++静态成员变量与静态函数  《火影忍者:木叶高手》快速升级攻略  CSS如何使用outline-offset与颜色组合突出元素边框  猫眼电影app怎么查询电影院的营业时间_猫眼电影影院营业时间查询教程  《蓝色星原:旅谣》坐骑获取攻略  安居客移动经纪人怎么设置自动回复?-安居客移动经纪人设置自动回复的方法  J*aScript对象中深度嵌套URL键的查找与更新策略  J*aScript深度克隆:实现高效、健壮与安全的复杂对象复制  J*aScript二进制处理_ArrayBuffer与Blob  WooCommerce购物车:强制显示所有交叉销售商品教程  百度输入法在AutoCAD中无法输入中文怎么办_百度输入法CAD输入异常解决方法  《战地6》反作弊已成功拦截240万次作弊 发售第一周98%比赛没有作弊  《东方财富》条件单关闭方法  Retrofit根路径POST请求:@POST("/") 的应用与解析  《知到》打卡课程方法  电脑视频号|直播|如何分享屏幕  Win10怎么设置快速启动 Win10开启快速启动设置方法  mysql怎么查询数据_mysql基础查询语句使用教程  Excel怎么用XLOOKUP函数实现双向查找_ExcelXLOOKUP替代VLOOKUP+HLOOKUP的高级用法  123平台官方登录入口 123邮箱网页端在线沟通工具  《下一站江湖2》武器获取方法  使用 .htaccess 正确配置 WordPress 子目录重定向与路径保留  高效调试PHP大型嵌套数组:JSON序列化与可视化工具实践  j*a中赋值运算符是什么?  使用VS Code作为你的个人知识管理系统  个人所得税办理入口 个人所得税综合所得年度汇算入口  J*aScript装饰器_元编程实战  解决Pandas DataFrame高度碎片化警告:高效创建多列的策略  Python实时数据流中高效查找最大最小值  PHP与SQL实践:高效实现数据复制与特定列值修改  FullCalendar自定义按钮样式定制指南  餐馆菜篮选购指南  Animex动漫社正版在线入口 Animex动漫社动漫官方观看网  CodeIgniter 3 中基于 MySQL 数据高效生成动态图表教程  盲鳗善于分泌黏液猜猜主要用来做什么  有道AI翻译入口 智能写作官方网站入口  Django模型动态关联检查:高效管理复杂关系  批改网官网首页登录 批改网学生用户登录入口  J*aScript大数运算_BigInt使用指南  b站网页版入口 哔哩哔哩官方网站直接进入  Python模块化编程:避免循环导入与共享函数的最佳实践  《360浏览器》设置摄像头权限方法  MySQL多重关联查询:利用别名高效获取同一表的多个关联字段  5G和6G的连接密度有什么区别 6G每平方公里能连接多少设备  电脑双系统如何安装和卸载 Windows和Linux双系统安装教程【详解】  TikTok网页版实时观看入口 TikTok网页版短视频在线浏览  iPhone14无法连接蓝牙设备如何解决  wps文字怎么设置文字环绕图片的方式_wps文字如何设置文字环绕图片方式  铁拳8在线玩 铁拳8在线秒玩入口 

 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.