【Ajax】多次异步请求的顺序以及回调处理问题

高分系列卫星轨道、传感器参数等信息 遥感卫星数据简介-高分系列 阅读详情

背景

通过搜索框进行检索:触发发送检索请求的事件是keyup,也就是当按完每个键之后发送一次检索请求。

问题

在输入框输入内容之后,快速地删减,有时会发现列表显示的数据和检索的关键字并不匹配;而缓慢地操作则不存在这个问题
比如输入“我是中国人”,列表的统计数显示20W条数据;而“我”,则显示有30W条数据;而当快速改变输入框内容时,这两个关键字检索出来的数据量有时不会和原来保持一致。

分析

通过浏览器工具查看发送的请求
在这里插入图片描述
我们可以看到第3条请求最先发送,第1条请求最晚发送。而返回时间却是反过来的,也就是说先请求的数据会在页面上覆盖掉后请求的数据,这就导致检索内容与当前检索关键字不一致。

这是因为ajax发送的是异步请求,而每次请求的时长不一致,也就是不能保证请求返回顺序。

解决

主要分两种情况:第一种是保证多个不同请求的执行顺序;第二种是保证同个请求多次的执行顺序。

在网上看了一些文章,这里列举下几个方案

有的人说直接使用ajax的同步模式就好了,我觉得这样做就失去了ajax的意义了,而且用户体验也不好。

第一种情况的解决方法

在ajax的success函数下发起下一个ajax请求,或在complete函数发起一个ajax请求,实现顺序调用

第二种情况的解决方法

在前端定义一个全局变量,记录请求次数的标识符,并把这个标识符带上传给后端,在ajax的回调中也返回过来,判断全局变量的值是否等于该标识符,如果等于就肯定是最后一次发起的请求,然后再渲染页面。

告别图像畸变:手把手教你用HALCON的`gen_image_to_world_plane_map`做高精度视觉测量 本文详细解析了HALCON的`gen_image_to_world_plane_map`算子在工业视觉测量中的应用,通过精确的几何变换消除透视畸变,提升测量精度。文章涵盖相机标定、世界坐标系建立、实战应用及性能优化,适用于液晶屏质检、金属板检测等场景,帮助工程师实现高精度视觉测量。 阅读详情

相关推荐

避坑指南:CST粒子工作室Track Solver常见的5个参数设置错误

本文深入剖析了CST粒子工作室中Track Solver在电子枪仿真时常见的5个关键参数设置错误,包括空间电荷模型选择、发射源定义、材料边界处理、监视器配置及求解器稳定性设置。通过对比错误与正确做法,帮助用户避开陷阱,确保粒子追踪仿真的物理准确性与数值稳定性,从而获得更精准的电子枪仿真结果。

dapp9builder的博客 486

ajax异步请求执行顺序问题

上面这段代码本意是想先alert(1),再alert(2),但因为ajax是异步请求,如果请求耗时较长,2会先于1弹出。解决办法1: 将ajax改为同步请求,但会导致页面加载较慢,失去了ajax本身的优势。

bocai_xiaodaidai的博客 1233

单片机通识之UART通信协议(如何用汇编实现)

使用汇编实现UART通信

smart_num_1的博客 996

Ajax同步和异步上问题的处理及其后续

Ajax在处理上的问题 2020年10月9号,今天在Ajax同步和异步问题上花费了大量的事件和精力,也收获到了一点点经验。 同步 把async改成false时候ajax请求变成同步,导致我的页面出现假死,如果在beforeSend中 加Alert,是有在执行的,但是无法弹出我的遮蔽层。 原因如下 JQ 在1.5版本之前 设置成同步的时候,页面会出现假死现象,导致beforeSeed调用渲染页面失败 假死原因: 浏览器的渲染(UI)线程和js线程是互斥的,在执行js耗时操作时,页面渲染会被阻塞掉。 当我们执

weixin_47843332的博客 696

一文入门BMS(电池管理系统)

本文章是基于曾师兄的文稿《具有组网扩展功能的新能源汽车电池管理系统》而写的文章。该文章主要是对BMS(Battery Management System,电池管理系统)做一些简要的介绍,借此助各位也助我入门BMS。有纰漏请指出,转载请说明。学习交流请发邮件 1280253714@qq.com。

weixin_45817947的博客 2万+

STM32F103C8T6+I2C+DMA读取陀螺仪模块JY901S(硬件I2C

说明:1.本实验代码适用移植一切stm32f1系列;2.本实验使用的是外设资源硬件I2C2;3.本实验运用的是DMA单次模式,如果需要DMA的循环模式,请移步我的另一篇文章;4.本文章不提供陀螺仪校准教学,并是在没有校准陀螺仪情况下读取数据;5.本文章是作者的学习记录及心得,如有不足,欢迎指正。 总结:亲测stm32f103c8t6最小系统板通过片上外设资源I2C配合DMA读去陀螺仪模块jy901s偏航角有效。

anquanyuanqqadsy的博客 6171

async和await如何使异步请求变为同步请求而顺序执行代码

ajax的异步请求,同步请求

奶厂小程的博客 4579

FusionCompute8.0.0实战指南:从零部署CNA与VRM环境

本文以华为FusionCompute 8.0.0为例,详细介绍了如何利用老旧硬件从零开始部署CNA计算节点与VRM管理节点的完整实战指南。内容涵盖实验环境准备、CNA安装与网络配置、VRM虚拟机部署方案对比,并提供了典型故障排查与性能调优技巧,帮助读者低成本构建可用的虚拟化学习环境。

weixin_29306317的博客 315

怎么控制ajax执行先后顺序,[转]多个ajax请求时控制执行顺序或全部执行后的操作...

一、当确保执行顺序时:1、请求加async: false,,这样所有的ajax就会同步执行,请求顺序就是代码顺序2、$.when($.ajax({async: false,url : url1}), $.ajax({async: false,url : url2})).done(function(){alert("done");}).fail(function(){alert("fail");}...

weixin_33736386的博客 1878

MATLAB 开发项目实例 1000 例专栏之第37例:基于Simulink的无人机飞行控制系统设计

通过上述项目实例,我们成功地使用Simulink设计和仿真了一个无人机的飞行控制系统。这个项目展示了从无人机建模、路径规划、控制器设计到仿真验证的完整流程。Simulink的可视化和模块化特性使得系统的建模和仿真更加直观和高效。

xiaoheshang_123的博客 163

【WRF模拟】土地利用类型的确定:最大覆盖法/瓦片法

土地利用类型的确定:最大覆盖法/瓦片法

WW、forever的博客 1529

ajax多次异步,Ajax 多次异步请求分析

取消之前的请求响应在ajax请求未响应之前可以使用 xhr.abort() 取消,但如果发出的请求已经到达了服务器,这种终止只是让浏览器不在监听这个请求的响应,服务器端仍然会进行处理。使用 abort() 取消后会进入 error 回调函数// 定义请求对象var getCategoryInfoAjax = null;function getCategoryInfo() {if (getCateg...

weixin_42120275的博客 493

多物理场耦合仿真-主题032-电磁-流体耦合

电磁-流体耦合,即磁流体动力学(MHD, Magnetohydrodynamics),是研究导电流体在电磁场中运动规律的学科,涉及电磁场与流体力学的深度耦合。本主题系统阐述磁流体动力学的基本理论、控制方程和数值方法。首先介绍MHD的基本概念和物理基础,包括导电流体的性质、电磁场基本方程;然后详细推导MHD控制方程组,包括连续性方程、动量方程、能量方程和电磁场方程;接着讨论MHD流动的特征参数,如Hartmann数、磁雷诺数、相互作用参数等;最后通过六个典型工程案例展示MHD分析的实际应用,包括电磁泵、磁流体

2401_87715305的博客 423

多个ajax请求按顺序执行回调

我们知道ajax在浏览器中是被异步处理的,也就是说,他是按照先响应先处理的,并不是先请求先处理的。 但是有些业务我们需要按顺序来处理,是有先后的,我们有以下两种方式。 jquery > 1.5.0 1、当我们要确保执行顺序时,设置 async=false,就是同步请求了 ajax1 = $.ajax({ async: false, url: url1, ...

猛犸象 3725

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

js异步请求:关于异步的一切(二)回调:打开异步的大门

在第一章,我们认识到了事件的概念以及处理事件最重要两个对象:事件循环机制,并发事件。只在这一章,我们对事件进行进一步分割。在上一张,我们提到js所有事件分为两种:现在的事件和将来的事件。在这里,我们进一步分割:将一个事件分为’现在‘与’将来‘。也就是回调曾经是异步的主力军。但是在技术发展的河流中,他也被冲刷出嶙峋的创口。在遥远的前端平原上,一颗新星正冉冉升起。没错,他就是我们的promise。所谓promise者,承诺也,希望也。回调是如何衰落的?

m0_74117421的博客 2088

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

ajax异步请求,以及ajax异步返回的数据的处理方案

为什么JS会有同步任务和异步任务: js是单线程,会按照顺序执行一个一个的任务,如果遇到某个任务像网络请求一类的需要延长执行回调函数,那么页面就会阻塞,所以引入了异步的概念。 同步任务:同步任务不需要进行等待可立即看到执行结果,比如console 异步任务:异步任务需要等待一定的时候才能看到结果,比如setTimeout、网络请求 为什么要监听异步任务: 不是所有异步任务都像定时器一样按时完成,所以我们通过消息队列(事件监听),监听异步任务的状态,如果已经可以执行回调函数,则将其放入事件队列(主线程执行栈)

a745595613的博客 2334

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

AJAX 异步请求详细教程

Ajax 全称为 Asynchronous JavaScript And Xml -- 异步 js 和 xml,用来进行交互式网页的制作;也是一种动态的网页开发技术,在不加载整个页面的前提下进行页面局部内容的刷新;Ajax 在后台与服务器进行少量的数据交互,使用网页实现异步更新,比传统的刷新整个页面带给服务器的压力要小很多;让程序的运行更加顺畅;Ajax 分为原生 js 实现和 Jquery 框架实现;

qq_54525448的博客 9549

AJax异步请求和同步请求的差别

问题背景 此前,遇到一个问题:在前台界面绑定下拉框value和name,$("#" + elementID).append("<option value='" + id + "'>" + name + "</option>"),绑定之后,再通过value赋值使name显示想要的内容,绑定的value和name是通过后台采用ajax请求读取过来的,但在界面调试过程中,...

大魔王的博客 1万+

探索同步异步,Ajax,回调函数,Promise

异步的 JavaScript 和 XML。

qq_62368250的博客 1065

探索高级AJAX技术:深入研究异步请求和响应处理

AJAX(Asynchronous JavaScript and XML)是一种在Web应用程序中使用的技术,它通过使用JavaScript和XML(或JSON)来实现在后台与服务器进行异步通信,从而实现页面内容的局部更新,而不需要完全刷新整个页面。AJAX的基本原理和工作流程如下:前端页面向服务器发送异步请求:当用户在前端页面上执行某个操作(例如点击按钮),JavaScript代码会创建一个XMLHttpRequest对象,然后通过该对象向后端服务器发送异步请求。

阿猫故乡的博客 1291

异步的ajax请求按顺序回调

varajax=function(obj){ var_obj=this; this.isReturn=false; varglobalCallback=function(data){ _obj.data=data; if(_obj.queue==n...

cihanli9723的博客 72

多个ajax按顺序请求

有时候在业务中数据的请求是有先后顺序的,但是默认的ajax都是异步执行的,实现同步请求的话只需要设置 async: false, 示例如下: <script> var url1 = '/center/Report/test1'; var url2 = '/center/Report/test2'; var url3 = '/center/Report/test3...

猛犸象 2533

AJAX怎么实现同步请求?Ajax同步和异步请求有什么区别以及使用场景有哪些?

AJAX中根据async的值不同分为同步(async = false)和异步(async = true)两种执行方式;在W3C的教程中推荐使用异步执行;

weixin_45249263的博客 2万+

ajax 请求 回调,Ajax请求回调地狱及解决方案(promise、async和await)

谈及回调地狱发生得情况和解决办法,就必须追溯到原生ajax请求。先列出服务器提供的数据接口:// 服务器端接口app.get('/data1', (req, res) => {res.send('hi')})app.get('/data2', (req, res) => {res.send('hello')})app.get('/data3', (req, res) => {re...

weixin_34603379的博客 1480

多个ajax异步请求返回的执行顺序处理,根据发起请求的顺序排序

同一个方法里的的两个ajax异步请求,由于两个请求是并行的,执行的快与慢,要看响应的数据量的大小及后台逻辑的复杂程度。而且有一个现象是:首先获得响应的不一定是先触发的请求。实现需要根据发起顺序的请求时,可以通过ajax的success下加一个ajax请求,或在回调函数complete套一个ajax实现顺序显示...

staidhou的博客 9138

AJAX 全解析:从原理到实战,轻松掌握异步请求

AJAX是一种异步JavaScript和XML技术,允许网页在不刷新整个页面的情况下与服务器交换数据并更新局部内容。其核心特性是异步请求和局部刷新,依赖JavaScript、XMLHttpRequest、XML/JSON和CSS等技术。AJAX适用于表单验证、分页加载、搜索提示等场景。工作原理包括创建请求对象、配置请求、设置回调、发送请求、处理响应和更新DOM。通过GET/POST请求实例展示AJAX的实际应用,如获取用户列表数据和提交表单数据。AJAX极大提升了Web应用的用户体验和性能。

weixin_46136757的博客 1056
上一篇: 【工具】Java Decompiler:Java反编译工具
下一篇: 【源码】ThreadLocal与Thread的关系
章 鱼
博客等级 码龄10年 203粉丝 105原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值