javascript解决接口请求过慢新的接口返回数据被旧的接口覆盖问题

news/2025/4/26 12:47:23/
今天请求接口的时候发现最新一次接口数据被上一次接口请求数据覆盖,原因是上一次接口用了2~3s,本次接口请求用了10ms, 导致新的数据被旧数据覆盖, 为了避免上一次请求的代码执行在本次请求之后才响应结束,使用Promise来管理异步操作。在每次请求开始时创建一个Promise对象,并在请求结束时resolve该Promise对象。然后在下一次请求开始前,检查上一次请求的Promise对象是否已经resolve,如果没有resolve,则取消上一次请求的代码执行
const examList = (examStatus = '') => {if (lastRequestPromise) {// 取消上一次请求的代码执行lastRequestPromise.catch(() => console.log('上一次请求被取消'));}let currentRequestPromise = new Promise((resolve, reject) => {// 异步请求proxy.sjuRequest.request(`接口地址`, "get", {}).then((res) => {const { rows = [] } = res;describeList.value = rows.length ? rows.map(item => {item.title = item.examName ?? '';item.beginTime= item.beginTime? dayjs(item.beginTime).format("YYYY-MM-DD HH:mm:ss"): "";return item}): []});}).catch(err => {describeList.value = []console.log('err', err)})lastRequestPromise = currentRequestPromise;
};

makeRequest函数用于模拟一个异步请求。在每次调用makeRequest函数时,会检查上一次请求的Promise对象是否已经resolve,如果没有resolve,则会输出"上一次请求被取消"。这样就可以实现在本次请求结束之后避免上一次请求的代码执行。


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

相关文章

2024.(3.30和4.1)力扣刷题记录-二叉树学习记录2

一、学习视频 如何灵活运用递归?【基础算法精讲 10】_哔哩哔哩_bilibili 二、跟练代码 1. 100. 相同的树 递归 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # …

Redis高可用技术

一.Redis高可用介绍: 高可用是指:服务器正常访问的时间 衡量的标准是:在多长时间内可以提供正常服务99.9%、99.99%、99.999%等等 但是在Redis语境中, 高可用的含义似乎要宽泛一些,除了保证提供正常服务(如主从分离、…

Python快速入门系列-8(Python数据分析与可视化)

第八章:Python数据分析与可视化 8.1 数据处理与清洗8.1.1 数据加载与查看8.1.2 数据清洗与处理8.1.3 数据转换与整理8.2 数据可视化工具介绍8.2.1 Matplotlib8.2.2 Seaborn8.2.3 Plotly8.3 数据挖掘与机器学习简介8.3.1 Scikit-learn8.3.2 TensorFlow总结在本章中,我们将探讨…

【智能算法】蜜獾算法(HBA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2021年,FA Hashim等人受到自然界中蜜獾狩猎行为启发,提出了蜜獾算法((Honey Badger Algorithm,HBA)。 2.算法原理 2.1算法思想 蜜獾以其…

关于网络丢包的一种可能性分析

最近我在工作中经常遇到有些客户的网络传输性能不理想。 通过wireshark抓包后我发现经常会有稍大的包timeout需要重传,这个现象导致了网络传输效率的大幅下降,因此我对网络丢包方面进行了进一步的研究。 根据我的经验总结,网络丢包有两种情况…

JVM 记录

记录 工具 https://gceasy.io 资料 尚硅谷宋红康JVM全套教程(详解java虚拟机) https://www.bilibili.com/video/BV1PJ411n7xZ?p361 全套课程分为《内存与垃圾回收篇》《字节码与类的加载篇》《性能监控与调优篇》三个篇章。 上篇《内存与垃圾回收篇…

【C+ +】第一个C+ + 项目的创建及namespace命名空间解释C++中的输入输出

目录 1.创建第一个c项目 1.1项目创建 1.2 .cpp源文件建立 1.3 第一个c程序hello world对比c语言hello world 2.命名空间 2.1 C关键字 2.2 命名空间---解决c语言中的命名冲突 2.2.1 namespace命名空间用法 2.2.2 :: 预作用限定符 2.2.3 命名空间的嵌套…

搭建跨境电商电商独立站如何接入1688平台API接口|通过1688API接口采集商品通过链接搜索商品下单

接口设计|接口接入 对于mall项目中商品模块的接口设计,大家可以参考项目的Swagger接口文档,以Pms开头的接口就是商品模块对应的接口。 参数说明 通用参数说明 参数不要乱传,否则不管成功失败都会扣费url说明……d.cn/平台/API类型/ 平台&…