发现此问题是在,我在写一个异步的查询方法,给界面添加一个Loading蒙板时发现的
界面表现是:我发现我的Loading蒙板并没有加载出来,而是直接进行了ajax方法
其实是对ajax的sync属性理解不充分,以下内容转载自:
https://www.cnblogs.com/wujianxingzhe/p/6744380.html
一、async值为true (异步)
当ajax发送请求后,在等待server端返回的这个过程中,前台会继续 执行ajax块后面的脚本,直到server端返回正确的结果才会去执行success,也就是说这时候执行的是两个线程,ajax块发出请求后一个线程 和ajax块后面的脚本(另一个线程)
$.ajax({
type:"POST",
url:"Venue.aspx?act=init",
dataType:"html",
success:function(result){ //function1()
f1();
f2();
}
failure:function (result) {
alert('Failed');
},
}
function2();
在上例中,当ajax块发出请求后,他将停留function1(),等待server端的返回,但同时(在这个等待过程中),前台会去执行function2()。
二、async值为false (同步)
当执行当前AJAX的时候会停止执行后面的JS代码,直到AJAX执行完毕后时,才能继续执行后面的JS代码。
$.ajax({
type:"POST",
url:"Venue.aspx?act=init",
dataType:"html",
async: false,
success:function(result){ //function1()
f1();
f2();
}
failure:function (result) {
alert('Failed');
},
}
function2();
当把asyn设为false时,这时ajax的请求时同步的,也就是说,这个时候ajax块发出请求后,他会等待在function1()这个地方,不会去执行function2(),直到function1()部分执行完毕。
但是你发现设置为true时,有可能并没有生效,注意,此时你需要将你的删除方法(修改元素样式的方法)放到success和error中,成功返回和失败都要添加,然后将ajax后的方法function2()删除即可