AJAX 调用的占位符函数

ajax 调用的占位符函数

我最近不得不创建一个没有后端端点的用户界面(ui)。重点是使 ui 尽可能具有响应性,以便用户可以知道操作何时正在进行。

这主要意味着当进行 ajax 调用时,ui 应进行指示,并在调用完成时进行相应更新。

为了帮助 ui 的开发,我创建了一个函数来模拟 ajax 调用。该功能能够:

接受延迟(以毫秒为单位)来模拟进行实际 ajax 调用的延迟接受 ajax 调用失败时模拟失败的概率返回提供的有效负载

typescript 代码如下(请参阅带有文档字符串的完整代码示例的要点):

export async function delay(  timeout: number,  probability?: number,  result?: t): promise {  return new promise((resolve, reject) => {    settimeout(() => {      if (!probability || probability  1) {        resolve(result);        return;      }      const hit = math.random();      if (hit < probability) {        resolve(result);      } else {        reject(          `placeholder rejection (${math.round(            hit * 100          )}%) - this should not appear in production`        );      }    }, timeout);  });}

要使用此功能:

async function handlebuttonclick() {  // update the ui to show a loading indicator.  try {    // highlight-start    // make the call take 3 seconds, with a 10% chance of failure,    // and return an array of users.    const result = await delay(3000, 0.9, [      {        email: 'user1@example.com',        username: 'user 1',      },    ]);    // highlight-end    // update the ui when the call completes succesfully.  } catch (err: any) {    // update the ui when the call fails.  }}

相同函数的 javascript 版本如下:

export async function delay(timeout, probability, result) {  return new Promise((resolve, reject) => {    setTimeout(() => {      if (        !probability ||        typeof probability !== 'number' ||        probability  1      ) {        resolve(result);        return;      }      const hit = Math.random();      console.log(hit, probability);      if (hit < probability) {        resolve(result);      } else {        reject(          `Placeholder rejection (${Math.round(            hit * 100          )}%) - this should NOT appear in production`        );      }    }, timeout);  });}

这篇文章首次发表于 cheehow.dev

以上就是AJAX 调用的占位符函数的详细内容,更多请关注创想鸟其它相关文章!

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月19日 13:28:04
下一篇 2025年12月18日 18:12:43

相关推荐

  • Leetcode #允许一个函数调用

    给定一个函数 fn,返回一个与原始函数相同的新函数,除了它确保 fn 最多被调用一次。 第一次调用返回的函数时,它应该返回与 fn 相同的结果。随后每次调用它时,它都应该返回未定义。 示例1: 输入: fn = (a,b,c) => (a + b + c), 调用 = [[1,2,3],[2,…

    2025年12月19日
    000
  • let、var 或 const 之间有什么区别?

    使用 var 关键字声明的变量的作用域为创建它们的函数,或者如果在任何函数外部创建,则为全局对象。 let 和 const 是块作用域的,这意味着它们只能在最近的一组花括号(函数、if-else 块或 for 循环)内访问。 function foo() { // all variables are…

    2025年12月19日
    000
  • 计算机科学中缓慢但持续努力的力量

    在快节奏的计算机科学世界中,缓慢但持续努力的价值常常被快速创新的诱惑所掩盖。然而,正是这种有条不紊的方法构成了该领域一些最杰出成就的基础。 *渐进式进步* 代码、设计和机器学习算法中的微小增量变化单独来看似乎微不足道,但随着时间的推移,累积起来,它们会带来实质性的进步。该策略使开发人员能够构建弹性系…

    2025年12月19日
    000
  • 如何避免请求无法访问的资源

    404 not found错误表示服务器无法找到所请求的资源。对于浏览器来说,这意味着该 url 无法识别。 404 请求会让用户感到沮丧,并可能导致网站性能不佳。此外,搜索引擎会抓取不存在的页面并将其编入索引,因此,网站的排名会受到负面影响。总而言之,我们可以通过一些方法来避免搜索无法访问的请求。…

    2025年12月19日
    000
  • SOLID 原则使用一些有趣的类比与车辆示例

    solid 是计算机编程中五个良好原则(规则)的缩写。 solid 允许程序员编写更易于理解和稍后更改的代码。 solid 通常与使用面向对象设计的系统一起使用。让我们使用车辆示例来解释 solid 原理。想象一下,我们正在设计一个系统来管理不同类型的车辆,例如汽车和电动汽车,以提供运输服务。 s …

    2025年12月19日
    000
  • Day/Days of Code:探索 JavaScript 函数的多功能性

    2024 年 8 月 20 日,星期二 虽然我见过 JavaScript 箭头函数,但我不知道 JavaScript 中声明函数的多种方法。这些可以非常紧凑,并且还有函数表达式,它将函数与变量混合在一起。尽管 JavaScript 的语法受到 C/C+± 的启发,但这感觉更现代。 明天,我将练习石头…

    2025年12月19日
    000
  • JUnit 与 Mockito:了解差异以及如何一起使用它们

    当谈到 Java 生态系统中的测试时,有两个框架脱颖而出:JUnit 和 Mockito。两者都是开发人员工具包中的必备工具,但它们有不同的用途。在这篇文章中,我们将深入探讨 JUnit 和 Mockito 之间的差异,探索它们如何相互补充,并讨论一起使用它们的最佳实践。什么是JUnit?JUnit…

    2025年12月19日
    000
  • 使用 JavaScript 模拟键盘输入

    在 javascript 中模拟键盘输入对于自动化任务或测试应用程序非常有用。 keyboardevent api 允许开发者以编程方式触发键盘事件。 示例 下面的代码片段模拟按下 ctrl + enter 命令。 bubbles 标志确保事件在 dom 中向上移动,因此文档中更高的任何元素也可以检…

    2025年12月19日
    000
  • 使用 Laravel + React 安装 Shadcn/ui❤️

    目前有很多css框架,例如bootstrap、bulma、semantic ui等。这可以加快构建显示(用户界面)的速度。目前流行的 css 工具之一是 shadcn/ui,它之前是什么? 在其官方网站shadcn/ui上表示 “我们可以复制并粘贴到我们的应用程序中的可重用组件的集合。” 所以 sh…

    2025年12月19日 好文分享
    000
  • 我的 Code Alpha 实习经历:构建项目并获得实践技能

    简介开始在 Code Alpha 实习是一次令人兴奋的机会,可以检验我的前端开发技能。作为实习的一部分,我被分配了三项关键任务:创建图像库、构建基本计算器以及开发自己的作品集网站。这些项目让我能够将我的 HTML、CSS 和 JavaScript 知识应用到现实场景中,这种体验既充满挑战又富有回报。…

    2025年12月19日
    000
  • 初学者 JavaScript

    JavaScript 是一种高级编程语言,广泛应用于 Web 开发。它由 Brendan Eich 于 1995 年创建,现已成为世界上最流行的编程语言之一。 JavaScript 主要用于前端 Web 开发,用于创建交互式用户界面和动态网页。它还可以在 Node.js 的帮助下用于后端 Web 开…

    2025年12月19日
    000
  • 使用 i 翻译你的 React 项目从未如此简单

    说疯狂的开发者! 今天我将向您展示,将整个项目翻译成 react 从未像现在这样容易。但首先您需要知道为什么这很重要。 当人们开始编程时,代码文本和消息通常使用葡萄牙语(pt-br)。将项目翻译成其他语言从来都不是优先事项,并且被认为是复杂或不必要的。 那么为什么它会相关呢? 这取决于你的实际情况。…

    2025年12月19日
    000
  • 使用人工智能检测过时的描述

    开发人员文档通常在每个文件中包含描述。这些描述可能会过时,导致混乱和不正确的信息。为了防止这种情况,您可以使用一些 ai 和 genaiscript 自动检测文档中过时的描述。 markdown 和 frontmatter 许多文档系统使用 markdown 格式来编写文档,并使用“frontmat…

    2025年12月19日
    000
  • 构建可扩展的 Azure 静态 Web 应用程序来处理高流量网站

    tl;dr: azure static web apps 的免费托管计划可能无法满足高流量需求。通过最小化和压缩资产、优化图像加载、实施缓存、使用企业级边缘和自动缩放来扩展这些应用程序,以增强全球用户的性能、安全性和效率。 在当今的软件开发世界中,您的应用程序不仅服务于本地社区,还覆盖来自全球各个角…

    2025年12月19日
    000
  • 使用 React Router v6 进行布局

    第 1 步:设置 react router v6 npm i -d react-router-dom@latest 第2步:定义路由结构 接下来,在 app.js 文件中定义路由的结构。我们将为主页、关于页面和联系页面创建路由,并将它们与相应的组件关联起来。 // app.jsimport reac…

    2025年12月19日 好文分享
    000
  • JavaScript 事件循环

    面试官:你有2分钟的时间。向我解释一下 JavaScript 事件循环。我的回答是:接受挑战,走吧! ? ? 单线程执行:JavaScript 在单线程模型上运行,这意味着它一次只能处理一项任务。任务使用调用堆栈进行管理,调用堆栈逐一执行函数。 ? 调用堆栈:将调用堆栈想象为一堆板。每次调用函数时,…

    2025年12月19日
    000
  • 在没有本地安装的情况下在 Postman 上测试您的端点

    当我的笔记本电脑损坏时,我不得不切换回旧的 Windows 8 机器。安装 Rust、Linux 和 IDE 等开发工具非常麻烦,特别是因为我依靠 Postman 来测试我的服务器端点。为了避免安装 Postman,我发现它提供了一个 Web 应用程序。然而,出于安全原因,网页版不支持 localh…

    2025年12月19日
    000
  • Typescript 推理及其用途

    typescript 通常可以根据上下文推断类型,而不是显式定义每个变量的类型。这样可以节省你的时间,让你的代码更加简洁。 让我们探讨一个简单的例子: // without type inferencelet message: string = “hello, world!”; // with ty…

    2025年12月19日
    000
  • 什么是 Vitest?为什么要使用它?

    嘿,开发者同事! ?你准备好进入vitest的世界了吗?如果您是测试新手或者一直在使用其他测试框架,请不要担心。我们将一起探索 vitest,在本文结束时,您会很高兴尝试一下! 什么是维泰斯特? vitest 就像你的代码的超级英雄。这是一个由 vite 提供支持的超快单元测试框架。但这对你来说意味…

    2025年12月19日
    000
  • Mini-git,了解文件如何存储在 Git 对象中

    昨天,我开始自己实现 Git 的核心功能之一——具体来说,文件是如何存储的、Git 对象是什么、以及哈希和压缩的过程。我花了 4 个小时来开发,在这篇文章中,我将向您介绍我的思考过程和方法。 当您提交文件时会发生什么? 当您在 Git 中提交文件时,会在幕后发生几个重要步骤: 文件压缩: 使用 zl…

    2025年12月19日
    000

发表回复

登录后才能评论
关注微信