bug 记录 - 接口被重复调用,响应时长不同,结果被覆盖的问题

news2024/10/7 16:25:13

发现问题与调试过程

  • 需求:输入框中输入关键字,根据关键字去调用接口,返回模糊查询的结果集合。
  • 问题:输入的关键字越少,接口响应时间越长。
  • 例如:输入“”,接口响应时间大概是 5 秒,紧接着输入“阿周”,接口响应时间大概是 2 秒。
  • 呈现的结果就是,在第 2 秒的时候,第二次模糊搜索的结果返回,列表内容是“阿周”相关,在第 5 秒的时候,第一次模糊搜索的结果返回,列表内容是“”相关。最终呈现的结果集(“”相关结果)与搜索框的内容(“阿周”)不一致

在这里插入图片描述

代码复现

<van-field
  v-model="filterCheckProvider"
  placeholder="请输入关键字"
  @input="filterFunc"
/>
// 绑定输入框的 @input 事件,添加节流函数
filterFunc() {
  this.debounce(() => {
    this.searchFunc();
    this.timmer = null;
  }, 800);
},
// 节流
debounce(func, delay) {
  return (() => {
    if (this.timmer) {
      // 如果已经存在,说明之前执行过了,这里要清除,重新开始
      clearTimeout(this.timmer);
    }
    this.timmer = setTimeout(func, delay);
  })();
},
// 模糊查询
searchFunc() {
  let params = {
	filterText: this.filterText,
  };
  // 调用接口
  searchFunc(params).then((res)=>{
	if(res && res.code==200) {
	  this.result = res.data; // 查询到结果后,赋值
	  // 第 2 秒时,得到结果 arrA
	  // 第 5 秒时,得到结果,覆盖上次结果 arrB
    }
  }).catch((err)=>{})
}

解决思路

  • 最开始的思路是,前端发送请求时,多添加一个参数 nowTime,取值为发送请求时的时间戳,后端拿到 nowTime ,不做改变,只做传递,和数据结果一起返回。前端拿到响应数据后,对比多次 nowTime,取最晚时间的 nowTime 对应的值。

在这里插入图片描述

  • 第二种思路,一位同事提出的,很玄妙!在接口的响应体中判断 params.filterTextthis.filterText 是否一致,如果两者一致,表示当前返回结果与输入框内容一致,是最新结果,需要渲染。如果两者不一致,说明当前返回结果与输入框内容不一致,不能渲染。

在这里插入图片描述

修改代码

<van-field
  v-model="filterCheckProvider"
  placeholder="请输入关键字"
  @input="filterFunc"
/>
// 绑定输入框的 @input 事件,添加节流函数
filterFunc() {
  this.debounce(() => {
    this.searchFunc();
    this.timmer = null;
  }, 800);
},
// 节流
debounce(func, delay) {
  return (() => {
    if (this.timmer) {
      // 如果已经存在,说明之前执行过了,这里要清除,重新开始
      clearTimeout(this.timmer);
    }
    this.timmer = setTimeout(func, delay);
  })();
},
// 模糊查询
searchFunc() {
  let params = {
	filterText: this.filterText,
  };
  // 调用接口
  searchFunc(params).then((res)=>{
	if(res && res.code==200) {
	  if(params.filterText == this.filterText) {
		this.result = res.data; // 查询到结果后,赋值
      }else {
		// 结果不匹配,啥都不做
	  }
    }
  }).catch((err)=>{})
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/600817.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【计算机网络中ip概念总结】【平时我们说的ip 到底是什么】【计算机网络中 ip地址是什么】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

【Linux】重定向dup

文章目录 前言重定向的原理dup函数添加重定向功能到myshell 前言 了解重定向之前需要明白文件描述符的工作规则&#xff0c;可以看这篇文章&#xff1a;文件系统 最关键的一点是&#xff1a;在进程中&#xff0c;在文件描述符表中&#xff0c;会将最小的、没有被使用的数组元…

vscode整合gitee

vscode需要下载的插件 第一个可以多仓库进行操作 第二个主要是用于仓库的管理和展示 vscode的gitee操作 1、按F1&#xff0c;搜索gitee 2、根据提示进行操作 标1的是第一个插件的操作 标2的是第二个插件的操作 绑定用户私钥 两个插件绑定私钥的方式不同&#xff0c; gitee的私…

这本数智平台白皮书讲透了大型企业数智化升级业务痛点

在以“升级企业数智化底座”为主题的2023用友BIP技术大会上&#xff0c;用友联合全球权威咨询机构IDC共同发布《建设数字中国 升级数智底座——企业数智化底座白皮书》&#xff0c;在这本数智平台白皮书里深入剖析了大型企业的数智化升级痛点。 大型企业普遍具有广域的业务覆盖…

六级备考15天|CET-6|翻译真题练习|北京大兴国际机场|9:15~10:20

目录 中文 英文 词汇 订正 解析 练习 中文 英文 词汇 put sth. into use 投入使用 距离south of地点 “...以南....公里处” construction 开工建设 the giant project 巨型工程 on the site …

LED显示屏驱动IC基本原理

LED显示屏驱动IC&#xff08;Integrated Circuit&#xff0c;集成电路&#xff09;是一种专门设计用于控制和驱动LED显示屏的电子元件。LED显示屏驱动IC的基本原理涉及到LED的电流控制、亮度调节、扫描控制和图像数据处理等方面。 以下是LED显示屏驱动IC的基本原理的详细说明&a…

只需简单几步,就能在报表工具FastReport .NET 中使用 RFID 标签

FastReport 是功能齐全的报表控件&#xff0c;可以帮助开发者可以快速并高效地为.NET&#xff0c;VCL&#xff0c;COM&#xff0c;ActiveX应用程序添加报表支持&#xff0c;由于其独特的编程原则&#xff0c;现在已经成为了Delphi平台最优秀的报表控件&#xff0c;支持将编程开…

喜讯丨计讯物联5G物联网数据网关TG463荣登2022年度中国物联网行业创新产品榜

近日&#xff0c;备受瞩目的2022‘物联之星’中国物联网产业年度榜单颁奖典礼在上海世博展览馆会场隆重举行。经由申报筛选、网络人气投票、专家评委投票等多重环节&#xff0c;计讯物联旗下5G物联网数据网关TG463荣登2022年度中国物联网行业创新产品榜。 作为中国物联网行业…

chatgpt赋能python:Python编写抽奖程序——让你的活动更加有趣

Python编写抽奖程序——让你的活动更加有趣 在现代社会中&#xff0c;抽奖活动已经成为了许多商家和组织吸引关注、增强互动的重要手段。而使用Python编写抽奖程序可以帮助我们更加方便地进行这一活动。本文将介绍Python编写抽奖程序的方法&#xff0c;以及如何在实际应用中优…

【强化学习原理+项目专栏】必看系列:单智能体、多智能体算法原理+项目实战、相关技巧(调参、画图等)、趣味项目实现、学术应用项目实现

【强化学习原理项目专栏】必看系列&#xff1a;单智能体、多智能体算法原理项目实战、相关技巧&#xff08;调参、画图等、趣味项目实现、学术应用项目实现 对于深度强化学习这块规划为&#xff1a; 基础单智能算法教学&#xff08;gym环境为主&#xff09;主流多智能算法教学…

Hive和Hadoop关系

Hive是基于Hadoop的一个数据仓库工具&#xff0c;用来进行数据提取、转化、加载&#xff0c;这是一种可以查询和分析存储在Hadoop中的大规模数据的机制。Hive数据仓库工具能将结构化的数据文件映射为一张数据库表&#xff0c;并提供SQL查询功能&#xff0c;能将SQL语句转变成Ma…

vue组件库 vue marquee vue跑马灯 vue走马灯 ​vue-marquee-text-component​中文

vue2运行安装 npm install vue-marquee-text-component1.2.0 Name说明DescriptionConfigduration持续时间动画持续时间&#xff5b;类型&#xff1a;数字&#xff0c;默认值&#xff1a;15&#xff5d;Animation Duration{ type: Number, default: 15 }repeatrepeat重复插槽的…

chatgpt赋能python:Python内置函数:如何查找和使用?

Python内置函数&#xff1a;如何查找和使用&#xff1f; 作为一名有10年Python编程经验的工程师&#xff0c;我想与大家分享一下Python内置函数的使用技巧。Python内置函数是指已经定义好的函数&#xff0c;无需另外安装也无需导入就可以直接在Python中使用的函数。这篇文章将…

chatgpt赋能python:Python编程教程:如何用Python写抢购程序

Python编程教程&#xff1a;如何用Python写抢购程序 随着网购的流行和限量商品的推出&#xff0c;抢购已经成为了一个非常热门的话题。有些人甚至会通过软件或程序来提高他们成功抢到商品的机会。在本篇文章中&#xff0c;我们将介绍如何用Python编写一个简单易用的抢购程序&a…

客户频繁变更需求,项目经理该如何应对?

王博刚当上项目经理&#xff0c;接手了一个中型软件项目。公司高层多次提醒他要尊重客户需求&#xff0c;并充分满足客户的期望。 一开始项目进展顺利&#xff0c;但后来客户频繁变更需求给团队带来了很多额外工作。王博动员大家加班保证项目进度&#xff0c;让客户非常满意。…

【面上对象三大特性之多态】

目录 1.什么是多态2.多态的条件 3.向上转型3.1向上转型的三种写法3.2 优缺点 4.向下转型&#xff08;用得少&#xff09;5.避免在构造方法中调用重写的方法6.重写6.1什么是重写6.2 重写和重载的区别 1.什么是多态 多态的概念&#xff1a;通俗来说&#xff0c;就是多种形态&…

PARSeq论文翻译

《Scene Text Recognition with Permuted Autoregressive Sequence Models》论文翻译 文章目录 《Scene Text Recognition with Permuted Autoregressive Sequence Models》论文翻译Abstract1、Introduction2、Related Work3、Permuted Autoregressive Sequence Models3.1、Mod…

MySQL数据库优化看这一篇就够了(最全干货篇)

文章目录 一、MySQL 主备切换以及读写分离二、SQL优化1、如何定位低效率的SQL语句-慢查询日志&#xff1f;EXPLAIN 执行计划怎么分析&#xff1f;2、sql语句优化常用的方法有哪些&#xff1f;3、如何优化索引&#xff1f;优化CRUD操作&#xff1f;优化分页&#xff1f;4、通过s…

C语言进阶之数据的存储

数据的存储 1. 数据类型介绍1.1 类型的基本归类 2.整型在内存中的存储2.1原码、反码、补码大小端介绍2.3练习 3. 浮点型在内存中的存储3.1浮点数存储规则 1. 数据类型介绍 在C语言初阶之数据类型这篇博客中&#xff0c;我们提到了关于数据内存的大小和基本用法 链接&#xff1…

大模型浪潮下的平台、框架、AI编译器和芯片架构 | 智源大会AI系统论坛

6月9日&#xff0c;2023北京智源大会&#xff0c;将邀请这一领域的探索者、实践者、以及关心智能科学的每个人&#xff0c;共同拉开未来舞台的帷幕&#xff0c;与会知名嘉宾包括&#xff0c;2019年图灵奖得主Yann LeCun、图灵奖得主Geoffrey Hinton、图灵奖得主Joseph Sifakis、…