超详细关于处理ajax请求并发的问题

1. 并行改串行

Function sync1 (){
	Console.log(---------1)
}
Function sync2(){
	console.log(----------2)
}
Sync1 ()
Sync2 ()

改造=======》

Function sync1 () {
	Console.log(------1)
Sync2 ()
}

2. 循环非阻塞

const Num = 1
Function sync1 (){
	Num++
}
Function sync2(){
	Num++
}

改造=======》

Const timer = setInterval(function (){
	If (num === 2){
		console.log(‘任务已完成’)
		ClearInterval(timer )
	} else {
		sync[num]()
	}
})
这个方法采用了定时间隔触发器,占用CPU比较多,建议酌情使用

3. ajax改为同步

如在jquery中将async参数设置为false
$.ajax({
	Url: 'xxxx',
	Async: false
})

4.使用第三方框架 Jquery

定义实例
var d1 = $.Deferred();  
var d2 = $.Deferred();  
  
function async1(){  
实例返回信息
    d1.resolve( "Fish" );  
}  
  
function async2(){  
    d2.resolve( "Pizza" );  
}  
  调用方法判断是否完成
$.when( d1, d2 ).done(function ( v1, v2 ) {  
    console.log( v1 + v2 + '已完成');  
});  

5.使用Promise.all

let num = 0
methods1() {
	num ++	
}
methods2() {
	num ++	
}
methods3() {
	if(num==2) console.log('num为2')
}
Promise.all([methods1,methods2])
.then((res)=>{
	if (num ==2) methods3()
})
在methods1&&methods2顺利执行完之后,调用方法methods3
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AJAX请求有时收不到返回值,可能具有以下几个原因: 1. 网络问题:由于网络不稳定或者请求量过大导致的延迟,可能会导致部分请求无法及时收到返回值。可以通过监控网络状态或者增加服务器的带宽来解决网络问题。 2. 服务器问题:服务器可能存在一些问题,比如容量不足、处理速度慢、代码错误等,这些都可能导致部分请求无法正常返回数据。可以通过增加服务器资源、优化接口代码来解决服务器问题。 3. 请求错误:在进行AJAX请求时,可能出现请求参数错误、请求URL错误等问题,导致服务器无法正确处理请求并返回数据。可以通过检查请求参数、URL路径等来解决请求错误问题。 4. 客户端问题:部分浏览器可能对AJAX请求有一些限制,比如同源策略等。也有可能是客户端代码编写错误导致部分请求无法收到返回值。可以通过检查浏览器兼容性、修改客户端代码来解决客户端问题。 5. 并发问题:如果多个请求同时发送到服务器,那么服务器可能无法同时处理这些请求,导致部分请求无法及时返回。可以通过增加服务器的处理能力或者优化请求并发处理方式来解决并发问题。 总的来说,AJAX请求无法收到返回值可能是由于网络、服务器、请求、客户端、并发等多种原因所导致的。针对具体情况,可以逐一排查并解决相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值