ajax同步的意义,关于ajax:AJAX同步和异步

本文详细介绍了Ajax同步和异步的概念及其区别。同步请求在等待服务器响应期间会阻塞浏览器,而异步请求允许浏览器在等待响应时继续执行其他任务,提高用户体验。异步是Ajax的默认模式,适合大多数场景。同步虽然可能导致页面假死,但在某些需要确保数据处理顺序的场合仍有其用处。理解这两者的差异对于优化网页性能至关重要。
摘要由CSDN通过智能技术生成

一.什么是同步申请:(false)

同步申请即是以后发出请求后,浏览器什么都不能做,必须得等到申请实现返回数据之后,才会执行后续的代码,相当于是排队,前一个人办理完本人的事务,下一个人才能接着办。也就是说,当JS代码加载到以后AJAX的时候会把页面里所有的代码进行加载,页面处于一个假死状态,当这个AJAX执行结束后才会持续运行其余代码页面解除假死状态(即当ajax返回数据后,才执行前面的function2)。

同步:提交申请->期待服务器解决->处理完毕返回 这个期间客户端浏览器不能干任何事异步: 申请通过事件触发->服务器解决(这是浏览器依然能够作其余事件)->处理完毕同步须要期待返回后果能力持续,异步不用期待,个别须要监听异步的后果。

二.什么是异步申请:(true)

异步申请就当发出请求的同时,浏览器能够持续做任何事,Ajax发送申请并不会影响页面的加载与用户的操作,相当于是在两条线上,各走各的,互不影响。

个别默认值为true异步。异步申请能够齐全不影响用户的体验成果,无论申请的工夫长或者短,用户都在分心的操作页面的其余内容,并不会有期待的感觉。

简略来说同步是在一条直线上的队列,异步不在一个队列上各走各的。

Ajax 同步和异步区别?

咱们在应用 ajax 个别都会应用异步解决。

异步解决:咱们通过事件触发到 ajax,申请服务器,在这个期间无论服务器有没有响应,客户端的其余代码一样能够运行。

同步解决:咱们通过实际触发 ajax,申请服务器,在这个期间期待服务器解决申请, 在这个期间客户端不能做任何解决。当 ajax 执行结束才会继续执行其余代码。

以jquery 的 async:false,这个属性

默认是true:异步,false:同步。举例:

同步就是你叫我去吃饭,我听到了就和你去吃饭;如果没有听到,你就不停的叫,直到我通知你听到了,才一起去吃饭。

异步就是你叫我,而后本人去吃饭,我失去音讯后可能立刻走,也可能等到忙完才去吃饭。

AJAX中依据async的值不同分为同步(async = false)和异步(async = true)

$.ajax({

type: "post",

url: "path",

cache:false,

async:false,

dataType: ($.browser.msie) ? "text" : "xml",

success: function(xmlobj){

function1(){};

}

});

function2(){};

默认状况下async是true

同步和异步有什么不同:

异步:在异步模式下,当咱们应用AJAX发送完申请后,可能还有代码须要执行。这个时候可能因为种种原因导致服务器还没有响应咱们的申请,然而因为咱们采纳了异步执行形式,所有蕴含AJAX申请代码的函数中的残余代码将继续执行。如果咱们是将申请后果交由另外一个JS函数去解决的,那么,这个时候就好比两条线程同时执行一样。

同步:在同步模式下,当咱们应用AJAX发送完申请后,后续还有代码须要执行,咱们同样将服务器响应交由另一个JS函数去解决,然而这时的代码执行状况是:在服务器没有响应或者解决响应后果的JS函数还没有解决实现return时,蕴含申请代码的函数的残余代码是不可能执行的。就好比单线程一样,申请收回后就进入阻塞状态,晓得接触阻塞余下的代码才会继续执行。

看以下代码:

var flag=true;

var index=0;

$.ajax({

url: "",

success: function(data){

flag=false;

}

});

while(flag){

index++;

}

alert(index);

最终程序进入了一个死循环

看以下代码:

var flag=true;

$.ajax({

url: "",

success: function(data){

flag=false;

}

});

alert(flag);

最终后果是true

js是单线程的,因为执行ajax申请会耗费肯定的工夫,甚至呈现了网络故障而迟迟得不到返回后果;这时,如果同步执行的话,就必须等到ajax返回后果当前能力执行接下来的代码,如果ajax申请须要1分钟,程序就得等1分钟。如果是异步执行的话,在等在server端返回的这个过程中,前台会会继续执行ajax块前面的脚本,直到server端返回失常的后果才会执行success,这时候执行的是两个线程,ajax块发出请求后一个线程和ajax块前面脚本

var flag=true;

var index=0;

$.ajax({

url: "",

async:false,

success: function(data){

flag=false;

}

});

while(flag){

index++;

}

alert(index);

最终后果是0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值