超详细关于处理ajax请求并发的问题
超详细关于处理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
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)