ajax同步请求加上loading遮罩遇到的坑
问题出在ajax被我设置成同步了,浏览器的渲染(UI)线程和js线程是互斥的,在执行js耗时操作时,页面渲染会被阻塞掉。当我们执行异步ajax的时候没有问题,但当设置为同步请求时,其他的动作(ajax函数后面的代码,还有渲染线程)都会停止下来
解决方法:
1、设置async为true,异步去访问。
2、使用jQuery的$("#loading").show(function(){});方法。
function upload(){
$("#loading").show(function(){ //显示遮罩层,在回调中执行ajax
$.ajax({
url:"xxxx",
async:false, //同步
success:function(res){
$("#loading").hide(); //隐藏遮罩层
}
})
});
}
3、通过订阅发布方法解决。