【前端】ajax中的async属性值之同步和异步及同步和异步区别

在Jquery中ajax方法中async用于控制同步和异步,当async值为true时是异步请求,当async值为fase时是同步请求。 ajax中async这个属性,用于控制请求数据的方式,默认是true,即默认以异步的方式请求数据。有时项目中会用到AJAX同步。这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出现假死状态,当这个AJAX执行完毕后才会继续运行其他代码页面假死状态解除。而异步则这个AJAX代码运行中的时候其他代码一样可以运行。

一、async值为true (异步)

当ajax发送请求后,在等待server端返回的这个过程中,前台会继续 执行ajax块后面的脚本,直到server端返回正确的结果才会去执行success,也就是说这时候执行的是两个线程,ajax块发出请求后一个线程 和ajax块后面的脚本(另一个线程)
例如
$.ajax({ type:"POST", url:"Venue.aspx?act=init", dataType:"html", success:function(result){ function1() } 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() } failure:function (result) { alert('Failed'); }, } function2(); 当把asyn设为false时,这时ajax的请求时同步的,也就是说,这个时候ajax块发出请求后,他会等待在function1()这个地方,不会去执行function2(),直到function1()部分执行完毕。 有人说:既然异步这么好,那全部都用异步好了,同步存在还有什么意义?那么,同步适用于一些什么情况呢?我们可以想一下,同步是一步一步来操作,等待请求返回的数据,再执行下一步,那么一定会有一些情况,只有这一步执行完,拿到数据,通过获取到这一步的数据来执行下一步的操作。 我一开始用ajax时在想,自己写的一些函数为什么不执行呢?于是我把他放在ajax的上面仍然不执行,这可怎么办,于是就把函数全部放在了success的返回函数里面,发现函数执行了。但是把函数放在success里面代码总归是“丑的、乱的”,后来才知道ajax是默认的异步执行,ajax的数据还没请求回来,有些函数就已经执行完了。而我需要拿到请求回来的数据才能执行下一步,所以这个是异步没办法实现的,同步的存在还是有一定道理的。 版权声明:除特别注明外,本站所有文章均为田珊珊个人博客原创 转载请注明:出处来自田珊珊个人博客 » 【前端】ajax中的async属性值之同步和异步及同步和异步区别
点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注
  • 笑八达说道:
    世间博客不少,风景这边独好!
  • wp_tianshan说道:
    @笑八达 谢谢。 :smile:
  • U乐娱乐注册