对于 Ajax 我们应该知道 Ajax 是主要用来在前端页面中向服务器后端请求数据, Ajax 中根据 async 的值不同分为同步 (async = false) 和异步 (async = true) 两种执行方式, 那么, Ajax 的同步和异步请求两种方式有什么区别呢? 小猿圈 web 前端讲师给大家详细分析一下 Ajax 同步与异步执行的区别.
首先看一下同步请求:
- $.Ajax({
- type:'post',
- url:"<c:url value='/device/org/'/>"+val,
- data:{
- 'orgId':val
- },
- success:function(data){
- //function(1)
- name=data.orgName;
- },
- dataType:"json",
- async:false
- });
- function(2);
当执行当前 Ajax 的时候会停止执行后面的 JS 代码, 直到 Ajax 执行完毕后时, 才能继续执行后面的 JS 代码.
当把 async 设为 false 时, 这时 Ajax 的请求时同步的, 也就是说, 这个时候 Ajax 块发出请求后, 他会等待在 function1()这个地方, 不会去执行 function2(), 直到 function1()部分执行完毕.
异步请求:
- $.Ajax({
- type:"POST",
- url:"Venue.aspx?act=init",
- dataType:"html",
- success:function(result){
- //function1()
- f1();
- f2();
- }
- failure:function (result) {
- alert('Failed');
- },
- }
- function2();
当 Ajax 发送请求后, 在等待 server 端返回的这个过程中, 前台会继续 执行 Ajax 块后面的脚本, 直到 server 端返回正确的结果才会去执行 success, 也就是说这时候执行的是两个线程, Ajax 块发出请求后一个线程 和 Ajax 块后面的脚本(另一个线程)
也就是说, 当 Ajax 块发出请求后, 他将停留 function1(), 等待 server 端的返回, 但同时(在这个等待过程中), 前台会去执行 function2().
通俗点儿的意思, 可以这么理解同步处理: 我吃完后再看手机, 看玩手机后, 再睡觉, 必须等待上一件事情干完之后, 下一件事才能继续执行, 单线程; 异步处理: 不必等待一个程序执行完毕, 可以执行其他任务, 我可以边吃饭, 边看手机, 是一种并行的方式.
Ajax 同步和异步这样理解会变简单很多, Python 讲师在小猿圈上总结出的经验, 小编最近在学习前端, 感觉小猿圈还不错 Web 前端自学2群: 738735873, 大家想学习也可以去看看, 一起学习, 一起进步.
来源: http://www.jianshu.com/p/fd12601c9a77