前端防止重复发送Ajax 请求

本文探讨了如何在前端防止重复发送Ajax请求,通过独占、防抖、节流、缓存和贪婪请求等策略来优化用户体验。推荐使用axios结合lodash实现防止重复请求的解决方案,适合不同场景的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

一般为了防止重复发送Ajax 请求,可以通过变量或按钮的状态去控制是否发送请求,但这样每个业务都得编写类似的代码,非常影响开发效率,所以这里结合axios和lodash推荐更合适的防止重复发送Ajax请求的方案:

一,独占请求

顾名思义,即在时刻内只允许一个请求存在,必须等到该请求成功或失败后才能开始下一个请求。如有多个操作都采取这种方式,会严重影响用户体验,建议使用在往数据库插入记录如创建用户等场景。

import axios from 'axios';
function doSubmit(url,params){
	if(axios.isPending){
		console.log('Requests are too frequent. Please try again later.');
	 	return;
	}
	axios.isPending = true;
	axios.post(url, params).then(res=>{
			//doSomething...
		}).finally(()=>{
		      axios.isPending = false;
		});
}
二,防抖请求

防抖,指连续触发事件但是在有效时间内只执行一次函数。节流会减少函数的执行频率。该方式非常适合input输入框远程搜索等功能。

import axios from 'axios';
import _ from 'lodash';
const doSubmit=_.throttle(function(url,param){
      axios.get(url, param).then(res=>{	/
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值