大家都知道ajax中的a就是异步的意思,ajax默认的就是异步请求,也可以说ajax很多情况下都是在异步的时候使用。今天遇到一个需要使用同步的地方,当时找了很多资料才解决。下面就总结一下异步、同步的区别:
异步就是说当ajax发送请求后,在等待server端返回的这个过程中,前台会继续 执行ajax块后面的脚本,直到server端返回正确的结果才会去执行success,也就是说这时候执行的是两个线程,ajax块发出请求后一个线程 和ajax块后面的脚本(另一个线程),我当时的问题是这样的,如果我使用异步,就会导致server端还没有正确返回数据,而location.reload();就已经执行了,这样数据就到了error而不是success
function DelImg()
{
layer.confirm('您确定删除此照片吗?', {
btn: ['确定','取消'], //按钮
skin: 'demo-class',
shade : [0.5 , '#000' , true],
title:'删除照片'
}, function(index){
$.ajax({
type:'post',
url:'',
async:false,
data:{},
success:function(){},
error:function(){}
})
location.reload();
layer.close(index);
});
}
简单的说:异步:请求服务器-->等待服务器回应,但是在等待的过程中后面如果有内容会继续执行
同步:请求服务器-->等待服务器回应,如果没有回应会一直等待