如何处理Javascript多并发问题
例如,一个订单页面,用于查询公共地址信息、商品信息、城市信息……这些请求是异步的,我们希望等到所有数据加载完成并允许用户操作。
一个很容易满足的问题是如何控制多个并发:
并行串行
如果业务逻辑本身是串行的,则请求模式是异步的,可以考虑此方法。
但这种情况显然不是这样的,这大大降低了页面的性能并延长了加载速度。
回调
只有较少的情况下的并发,多层嵌套回调将大大降低代码的可读性
功能async1(){
意为做某事。
}
功能async2(){
意为做某事。
async1();
}
async2();
Ajax被更改为同步。
例如,在jQuery,async参数设置为false
$ ajax({
网址: / / jQuery test1 .txt
异步:假
});
设置结束标志
可以设置一个简单的点,每完成一个异步函数加1,或者一个数组,执行每个异步函数来更新数组。
回调计数
var = 0;
功能async1(){
意为做某事。
回调();
}
功能async2(){
意为做某事。
回调();
}
函数回调(){
碳纳米管+;
如果(2 = = CNT)console.log(已完成);
}
循环障碍
var = 0;
功能async1(){
意为做某事。
碳纳米管+;
}
功能async2(){
意为做某事。
碳纳米管+;
}
而(2)CNT { }
循环阻塞
建议不要使用太多,以免影响性能。
var = 0;
功能async1(){
意为做某事。
碳纳米管+;
}
功能async2(){
意为做某事。
碳纳米管+;
}
VaR区间= setInterval(function()){
如果(2 = = CNT){
console.log('completed执行);
ClearInterval(间隔)
}
}
第三方框架的实施
滑动分页
我目前使用这个项目的方式
var =;
var =递延();
功能async1(){
d1.resolve(鱼);
}
功能async2(){
d2.resolve(比萨);
}
$(D1,D2)。完成(函数(V1,V2){)
console.log(V1 +V2已完成);
});
以上内容是关于如何处理Javascript多并发问题的一点编辑器,希望对您有所帮助。