显示等待动画:Await Fetch 期间的用户交互阻塞

显示等待动画:await fetch 期间的用户交互阻塞

本文介绍如何在 JavaScript 的 await fetch 调用期间显示一个全屏等待动画,从而阻塞用户与页面的进一步交互。通过创建一个覆盖整个页面的 div 元素,并利用 CSS 控制其显示与隐藏,可以实现一个简单的等待提示效果,提升用户体验。

在进行网络请求时,特别是使用 await fetch 进行异步操作时,用户可能需要等待一段时间才能看到结果。为了提升用户体验,可以在等待期间显示一个等待动画,并阻塞用户与页面的进一步交互,避免不必要的操作。

实现方法

主要思路是创建一个覆盖整个页面的 div 元素,并使用 CSS 控制其显示与隐藏。当发起 fetch 请求时,显示该 div 元素,当请求完成后,隐藏该 div 元素。

1. HTML 结构

首先,在 HTML 中添加一个 div 元素,用于显示等待动画。该 div 元素需要覆盖整个页面,并具有较高的 z-index 值,以确保其位于其他元素之上。

Wait...

解释:

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: 使用 Flexbox 布局,将内容居中显示。display: none: 默认情况下,隐藏 div 元素。background-color: rgba(0, 0, 0, 0.5): 添加半透明的背景色,进一步遮盖页面内容。

2. JavaScript 代码

接下来,在 JavaScript 代码中,在发起 fetch 请求之前显示 div 元素,在请求完成后隐藏 div 元素。

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 fetching data:", error);        // 处理错误情况,例如显示错误消息    } finally {        // 隐藏等待动画        document.getElementById("loading").style.display = "none";    }}

解释:

document.getElementById(“loading”).style.display = “flex”;: 将 div 元素的 display 属性设置为 “flex”,使其显示出来。 使用flex是为了让其中的内容居中显示。document.getElementById(“loading”).style.display = “none”;: 将 div 元素的 display 属性设置为 “none”,使其隐藏起来。try…catch…finally: 使用 try…catch…finally 块来处理可能发生的错误,并在 finally 块中确保等待动画始终被隐藏,即使发生错误。

3. 添加加载动画

为了让等待提示更加友好,可以在 div 元素中添加一个加载动画。可以使用 CSS 或 JavaScript 创建加载动画,也可以使用现成的加载动画库。例如,可以使用 Font Awesome 提供的加载图标:

Wait...

需要引入 Font Awesome 的 CSS 文件。

注意事项

在实际应用中,可以根据需要自定义等待动画的样式和内容。确保在请求完成后及时隐藏等待动画,避免影响用户体验。如果请求时间过长,可以考虑添加超时处理,并向用户显示提示信息。使用 try…catch…finally 块来处理可能发生的错误,并在 finally 块中确保等待动画始终被隐藏。考虑使用更高级的加载指示器库,例如NProgress或 Pace,它们提供了更丰富的定制选项和动画效果。

总结

通过创建一个全屏 div 元素,并使用 CSS 和 JavaScript 控制其显示与隐藏,可以实现在 await fetch 调用期间显示等待动画,并阻塞用户与页面的进一步交互。这种方法简单易用,可以有效地提升用户体验。 结合合适的加载动画和错误处理机制,可以创建一个更加友好和健壮的等待提示效果。

以上就是显示等待动画:Await Fetch 期间的用户交互阻塞的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1530526.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
在Ajax请求后正确初始化Bootstrap Carousel
上一篇 2025年12月20日 22:03:45
JavaScript Fetch API:从数据获取到表格渲染的优化实践
下一篇 2025年12月20日 22:03:58

相关推荐

  • ROS1/2机器人之从命令调用到程序编写

    难度级别: 容易☞命令调用 困难☞程序编写 命令调用简单案例 ROS1: rosrun package-name executable-name ROS2: ros2 run package-name executable-name 比如启动键盘遥控turtlesim ROS1: 大多数 ROS1 …

    2026年9月1日
    000
  • 《猎魔人》第四季曝新剧照!选角遭粉丝集体吐槽

    《猎魔人》第四季曝新剧照!选角遭粉丝集体吐槽《猎魔人》第四季曝新剧照!选角遭粉丝集体吐槽《猎魔人》第四季曝新剧照!选角遭粉丝集体吐槽《猎魔人》第四季曝新剧照!选角遭粉丝集体吐槽

    Netflix《猎魔人》第四季最新剧照由Entertainment Weekly今日发布,引发广泛关注。本季将迎来关键转折:利亚姆·海姆斯沃斯正式接棒亨利·卡维尔,饰演主角杰洛特·里维亚。自换角消息公布后,观众热议不断,此次新剧照释出再度点燃粉丝讨论热潮。 此外,第四季将首度引入吸血鬼角色雷吉斯(R…

    2026年9月1日 用户投稿
    000
  • 云闪付怎么给手机号充话费_云闪付话费充值操作指南

    答案:可通过首页入口、更多服务或搜索功能在云闪付充值话费。打开APP后,选择“手机充值”图标,输入号码与金额并支付;或通过“更多”中的“充值缴费”进入操作;也可直接搜索“话费充值”快速跳转,确认信息后完成付款。 如果您想为自己的手机号快速充值话费,但不确定如何在云闪付中完成操作,可以通过以下多种方式…

    2026年9月1日
    000
  • 孙富春教授亲自下场,具身物理底座「中科第五纪」完成种子轮,云集清华大学与中科院自动化所两大研发团队

    ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 近日,专注于具身智能的科技公司“中科第五纪”宣布完成卓源亚洲的种子轮融资。公司汇聚了清华大学孙富春教授机器人实验室和中国科学院自动化所的顶尖人才,致力于研发全球领先的具身物理底座和多模态端到端大…

    2026年9月1日
    000
  • 3.0结婚时代:新婚恋模式

    3.0结婚时代:新婚恋模式3.0结婚时代:新婚恋模式3.0结婚时代:新婚恋模式3.0结婚时代:新婚恋模式

    在信息高速更迭的当下,各个行业都在经历深刻变革,服务领域同样如此。婚庆行业的转型升级尤为显著。从以往由父母主导的传统婚嫁形式,逐渐转向新人主动参与、追求个性表达的新趋势,婚礼服务正步入一个崭新阶段。以久囍结婚为代表的一站式服务平台,正在推动婚庆行业迈入服务更完善、体验更流畅的3.0时代。 1、 婚姻…

    2026年9月1日 用户投稿
    600
  • 提升PHP服务开发效率:symfony/service-contracts库的应用

    可以通过一下地址学习composer:学习地址 在开发复杂的php项目时,确保不同服务之间的兼容性和可维护性是一个常见的挑战。我尝试过多种方法来解决这个问题,但效果都不尽如人意。直到我发现了symfony提供的service-contracts库,它提供了一套通用的服务抽象,能够显著提升开发效率和代…

    用户投稿 2026年9月1日
    200
  • 苹果代码库出现未发布音频产品 外媒:或为AirPods Pro3

    近日,苹果在其代码库中进行了更新,有外媒注意到新版代码库中出现了一个未发布音频产品的数字编号。根据信息来源以及相关设备的传闻,这款设备很可能正是即将推出的airpods pro 3。 苹果旗下的每一款AirPods和Beats耳机都有专属的蓝牙ID号,例如AirPods Pro 2的ID号是0x20…

    2026年9月1日
    000
  • 使用Composer解决依赖注入:PSR-11容器接口的应用

    可以通过一下地址学习composer:学习地址 在开发大型php项目时,依赖管理是一个常见但棘手的问题。最初,我尝试使用全局变量和手动注入依赖,但这不仅增加了代码的复杂度,还容易导致错误。最终,我通过使用psr-11容器接口,并借助composer的强大功能,成功解决了这个问题。 PSR-11(PH…

    用户投稿 2026年9月1日
    000
  • vivo X Fold 5明日发布!全球最轻和全球首款三防折叠

    6月25日19:00,vivo将正式召开vivo x fold 5新品发布会。根据cnmo掌握的消息,除了主打的vivo x fold 5——这款被誉为全球最轻折叠屏手机以及首款具备三防功能的折叠机型外,现场还将发布vivo tws air3 pro等新品。 vivo X Fold 5 从官方此前透…

    2026年9月1日
    000
  • 如何使用Composer快速搭建LaravelCMS:mki-labs/espresso的实战经验

    可以通过一下地址学习composer:学习地址 在开发一个新的 laravel 项目时,我常常面临一个挑战:如何快速搭建一个功能齐全的内容管理系统(cms)。我尝试过手动编写 cms,但发现这不仅耗时,还需要不断维护和更新。幸运的是,我发现了 mki-labs/espresso 这个 laravel…

    用户投稿 2026年9月1日
    000
  • 铁路12306怎么开具电子发票_铁路12306电子发票开具方法

    可通过铁路12306 App在线开具电子发票,或在车站获取“扫码开票单”后扫码申请,支持本人、他人代办及购票人统一开具,发票以电子形式发送至邮箱或App。 如果您需要为铁路行程申请发票,但发现无法获取传统的纸质票据,则可能是由于铁路系统已全面推行电子发票。以下是解决此问题的步骤: 本文运行环境:iP…

    2026年9月1日
    000
  • DeepSeek高管发生变更,新增互联网信息服务

    深度求索公司近期工商信息发生重大变更,新增“互联网信息服务”业务,并调整了高级管理人员。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ (来源:天眼查) 根据天眼查数据显示,2月13日,深度求索(杭州深度求索人工智能基础技术研究有限公司,D…

    2026年9月1日
    000
  • 有效管理过时代码:使用SymfonyDeprecationContracts

    可以通过一下地址学习composer:学习地址 在软件开发中,管理过时代码是一个常见但又容易被忽视的问题。最近,我在维护一个项目时,遇到了一个棘手的情况:一些旧的代码在新版本中被标记为过时,导致程序在升级后出现功能失效。为了解决这个问题,我开始寻找一种有效的方法来管理这些过时代码,最终找到了symf…

    用户投稿 2026年9月1日
    000
  • PHP cURL查询Notion数据库:掌握正确的过滤条件构建方法

    本教程详细阐述了使用PHP cURL向Notion API查询数据库时,如何正确构建包含过滤条件的POST请求体。核心问题在于,过滤条件必须嵌套在请求载荷的filter键下,而非直接作为顶级属性。文章通过对比错误与正确的代码示例,指导开发者精确地筛选Notion数据库数据,避免获取冗余信息,从而提高…

    2026年9月1日
    100
  • AI搜索时代,慧科讯业“颗粒化GEO”重构流量壁垒

    AI搜索时代,慧科讯业“颗粒化GEO”重构流量壁垒AI搜索时代,慧科讯业“颗粒化GEO”重构流量壁垒AI搜索时代,慧科讯业“颗粒化GEO”重构流量壁垒AI搜索时代,慧科讯业“颗粒化GEO”重构流量壁垒

    在数字化时代的快速演进中,曾经称霸搜索领域的百度、谷歌等传统搜索引擎,如今正面临着前所未有的挑战,往昔的流量优势逐渐被新兴力量所瓦解。人工智能分析平台aitools.xyz数据显示,deepseek与chatgpt在2025年2月的月度新增访问量分别达到5.2亿次及5亿次,成为全球增长最快的人工智能…

    2026年9月1日 用户投稿
    200
  • Java大数据中如何快速精准匹配句子中的关键词?

    Java大数据环境下的快速精准关键词匹配 本文探讨如何在Java大数据环境下,高效地从包含20万到50万条记录的词库中,快速精准地匹配句子中的关键词。词库存储介质可以是列表、字典、Redis或数据库。 高效算法:基于前缀树的匹配 为了实现高效匹配,我们采用基于前缀树(Trie树)的算法。该算法将每个…

    2026年9月1日
    100
  • 北大彭宇新教授团队开源细粒度多模态大模型Finedefics

    北京大学彭宇新教授团队在细粒度多模态大模型领域取得突破性进展,其研究成果已被iclr 2025接收并开源。该团队研发的finedefics模型显著提升了多模态大模型的细粒度视觉识别能力,在六个权威数据集上的平均准确率达到76.84%,超越了现有模型。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜…

    2026年9月1日
    100
  • iPhone8美版和国版有何不同

    保修服务对比 手机的售后保障是用户选购时的重要考量因素。国行版iPhone 8支持全国联保,只要在苹果官方授权维修点,无论身处国内哪个城市,都能享受正规的维修与保养服务。相比之下,美版iPhone 8在中国大陆地区不享有官方保修支持,一旦设备出现故障,用户需自行承担维修费用,或选择将手机寄往美国处理…

    用户投稿 2026年9月1日
    100
  • soul怎么取消超级星人自动续费_Soul超级星人取消续费教程

    要取消Soul超级星人会员自动续费,需根据支付方式操作:通过App Store订阅的,在iPhone设置中进入Apple ID账户,选择“订阅”并取消Soul服务;通过微信支付的,进入微信“服务”页面,点击右上角“…”进入“扣费服务”,找到Soul项目并关闭自动续费;通过支付宝支付的,打开支付宝“我…

    2026年9月1日
    000
  • 苹果手机如何开启防偷窥模式

    苹果手机虽无“防偷窥模式”,但可通过引导式访问锁定当前界面,防止他人退出或切换应用;2. 可为单个App设置面容ID验证或隐藏并加密,限制访问;3. 通过隐藏相册、关闭“已隐藏”相册显示及备忘录上锁等方式保护私密内容。 苹果手机没有叫“防偷窥模式”的独立功能,但有几种非常实用的方法,能在不同场景下防…

    2026年9月1日
    100

发表回复

登录后才能评论
关注微信