JavaScript 心跳函数封装-轮询接口查询数据状态

news/2025/2/19 9:23:22/

文章目录

  • 函数设计需求
  • 1. 简介
  • 2. 函数实现
  • 3. 注意事项
  • 4. 实际应用
  • 5. 总结

函数设计需求

本函数解决需求如下

  • 函数为封装好的异步函数
  • 轮询未到终止状态时promise始终为padding状态
  • 轮询未到终止态时需求每五秒请求一次接口
  • 轮询接口为waitingCheckImportV2
  • 状态值success为成功
  • 状态值failed为成功

1. 简介

本心跳函数是一个异步函数,其作用是对传入的 id 进行连续访问,直到访问成功为止。在每次访问时,函数会等待五秒后再进行下一次访问。如果访问成功,则返回一个 resolved 状态的 Promise,其值为 id;否则返回一个 rejected 状态的 Promise。

在实际应用中,该函数通常被用于监控某个操作的完成情况,例如上传文件至服务器或导入数据到数据库。

2. 函数实现

函数主体代码如下:

async function continuousAccess(id) {await new Promise((resolve) => setTimeout(() => resolve(), 5000))const { data, msg } = await waitingCheckImportV2({ threadName: id })if (data === 'success') {return Promise.resolve(id)}if (data === 'failed') {ElMessage.error(msg || '计算失败')return Promise.reject()}return continuousAccess(id)
}

其中,await new Promise((resolve) => setTimeout(() => resolve(), 5000)) 表示等待五秒后再执行下一步操作。

接着,通过调用另一个异步函数 waitingCheckImportV2,获取指定 id 的状态信息(包括数据和信息)。如果数据为 ‘success’,即访问成功,则返回一个 resolved 状态的 Promise,其值为 id;如果数据为 ‘failed’,即访问失败,则调用 ElMessage.error 方法输出错误信息,并返回一个 rejected 状态的 Promise;否则继续进行下一次访问。

如果连续访问多次仍然没有成功访问,则函数会不断地递归调用自身,直到访问成功为止。

3. 注意事项

  • 函数中必须传入参数 id,否则函数无法执行;
  • 在使用该函数前,需要先定义异步函数 waitingCheckImportV2(轮询目的函数),并确保其能够获取指定 id 的状态信息;
  • 调用函数后,应该对返回的 Promise 进行处理,以便在访问成功或失败时做出相应的操作。

4. 实际应用

在实际应用中,可以使用如下代码对心跳函数进行调用:

continuousAccess(someId).then(id => {console.log(`访问 ${id} 成功!`)// 执行成功后的操作}).catch(() => {console.log('访问失败!')// 执行失败后的操作})

其中,someId 是需要访问的目标 id。在访问成功时,将输出“访问 someId 成功!”;在访问失败时,将输出“访问失败!”。可以根据实际需求,在相应位置添加需要执行的操作。

5. 总结

本心跳函数是一个简单而实用的异步函数,主要用于监控某个操作的完成情况。其实现方式相对简单,适用性强,可以在很多场合得到应用。在使用该函数时,需要注意传参和 Promise 的处理,以便正确地执行代码。


http://www.ppmy.cn/news/59921.html

相关文章

LeetCode //2667. Create Hello World Function (Day 1 of LC JavaScript Challenge)

2667. Create Hello World Function Write a function createHelloWorld. It should return a new function that always returns “Hello World”. Example 1: Input: args [] Output: “Hello World” Explanation: const f createHelloWorld(); f(); // “Hello World” …

搭建Harbor镜像仓库及简单使用

一、Harbor简介 Harbor是由VMware公司中国团队为企业用户设计的Registry server开源项目,包括了权限管理(RBAC)、LDAP、审计、管理界面、自我注册、HA 等企业必需的功能,同时针对中国用户的特点,设计镜像复制和中文支持等功能。 作为一个企…

第二十五章 刚体Rigidbody

在物理学中,静止和匀速直线运动是物体的平衡状态,如果给该物体施加某一个力的话,物体的平衡状态就会改变,当然这个真理的前提是理想状态。我们知道在现实世界中,由于重力和摩擦力的存在,任何一个物体都不可…

一文弄懂Pytorch的DataLoader,Dataset,Sampler之间的关系

以下内容都是针对Pytorch 1.0-1.1介绍。 很多文章都是从Dataset等对象自下往上进行介绍,但是对于初学者而言,其实这并不好理解,因为有的时候会不自觉地陷入到一些细枝末节中去,而不能把握重点,所以本文将会自上而下地对…

【边缘设备】yolov5训练与rknn模型导出并在RK3588部署(亲测有效)

保姆级教程,看这一篇就够用了 环境准备 将宿主机和开发板接入同一个局域网,方便开发。 宿主机 PC电脑,x86_64, 带显卡, 配置不表, 能训练和开发即可。系统: ubuntu 22.04 LTS 版本( ubuntu 18.04 LTS 以上)自带的远程软件&…

tensorRT的完整安装以及常见错误 export failure: [WinError 127] 找不到指定的程序。

安装CUDA 查看本机适配的CUDA 版本 要想安装TensorRT必须要先安装CUDA和cudnn,那么首先需要去查看自己电脑的英伟达驱动程序程序,位置如下: NVIDIA控制面板->帮助->系统信息->组件,如下图所示本机适配CUDA版本为11.7 …

CLion开发工具 | 05 - 使用CLion开发ESP32

专栏介绍 一、准备工作 电脑上安装好ESP-IDF环境本文参考Jetbrains官方视频教程:在 Windows 上用 CLion 开发 ESP32 | CLion教程 | 嵌入式开发 | IDE 二、打开工程 复制一份新的helloworld工程。 使用CLion打开该工程。 选择信任该工程。 CLion打开后自动打开…

ARM汇编语言(2)

ARM汇编语言 一、引言 ARM汇编语言是一种低级别的计算机指令集架构(ISA)语言,它是ARM处理器上的一种指令集架构,用于编写底层的系统软件,例如操作系统、驱动程序和嵌入式系统应用程序。 ARM汇编语言使用基于寄存器的…