84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
async 默认是 true,即为异步方式,$.Ajax 执行后,会继续执行ajax后面的脚本,直到服务器端返回数据后,触发$.Ajax里的success方法,这时候执行的是两个线程。若要将其设置为false,则所有的请求均为同步请求,在没有返回值之前,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。
async
true
$.Ajax
false
这个其他操作具体举个例子呢,是指 http 请求还是 js 脚本?
Following the voice in heart.
先上图
async 为 false 的时候,阻塞代码直到 ajax 调用返回,所以是先执行的 done(即 success) 再执行的 ajax 调用之后的那句 console.log。
done
success
console.log
async 为 true(默认) 的时候,不阻塞代码,所以下面的 console.log 先执行,等 ajax 返回之后再执行的 done 里面的 console.log。
指js脚本http://transcoder.tradaquan.com/from=2001a/bd_page_type=1/ssid=0/uid=0/pu=usm%401%2Csz%401320_2003%2Cta%40iphone_1_10.3_1_11.5/baiduid =3ECCA1E6D2665DB48EFEBB60D9D9084F/w=0_10_/t=iphone/l=3/tc?ref=www_iphone&lid=8260698868132866872&order=1&fm=alhm&h5ad=1&srd=1&dict=32&tj=h5_mobile_1_0_10_title&w _qd=IlPT2AEptyoA_yivDVKcCTpsvgzWOeIntjcXa3jSqfgrUO_&sec=21456&di=8e54227838fdccf9&bdenc=1&nsrc=IlPT2AEptyoA_yixCFOxXnANedT62v3IEQGG_ytK1DK6mlrte4viZQRAVDb6 QHOTCU8sumX0sqdFtXLR_7Mi8xR_qbIwdzZz
$.Ajax 后面的 js 脚本。(最好不要使用脚本这个词)
如果ajax是同步的,就是说js顺序执行,http请求是ajax发的,js是就是js,不要混为一谈。用户其他操作,应该是指用户触发了和js有关的操作。如果ajax后面有绑定某个元素的时间,是可以触发的。最终总结就是,当前js脚本,同步ajax时,脚本顺序执行;异步ajax时,异步执行,所谓异步执行就是,执行到ajax时,不等请求是否返回,直接执行ajax之后的js语句。
先上图
async
为false
的时候,阻塞代码直到 ajax 调用返回,所以是先执行的done
(即success
) 再执行的 ajax 调用之后的那句console.log
。async
为true
(默认) 的时候,不阻塞代码,所以下面的console.log
先执行,等 ajax 返回之后再执行的done
里面的console.log
。指js脚本
http://transcoder.tradaquan.com/from=2001a/bd_page_type=1/ssid=0/uid=0/pu=usm%401%2Csz%401320_2003%2Cta%40iphone_1_10.3_1_11.5/baiduid =3ECCA1E6D2665DB48EFEBB60D9D9084F/w=0_10_/t=iphone/l=3/tc?ref=www_iphone&lid=8260698868132866872&order=1&fm=alhm&h5ad=1&srd=1&dict=32&tj=h5_mobile_1_0_10_title&w _qd=IlPT2AEptyoA_yivDVKcCTpsvgzWOeIntjcXa3jSqfgrUO_&sec=21456&di=8e54227838fdccf9&bdenc=1&nsrc=IlPT2AEptyoA_yixCFOxXnANedT62v3IEQGG_ytK1DK6mlrte4viZQRAVDb6 QHOTCU8sumX0sqdFtXLR_7Mi8xR_qbIwdzZz
$.Ajax
后面的 js 脚本。(最好不要使用脚本这个词)如果ajax是同步的,就是说js顺序执行,http请求是ajax发的,js是就是js,不要混为一谈。
用户其他操作,应该是指用户触发了和js有关的操作。如果ajax后面有绑定某个元素的时间,是可以触发的。
最终总结就是,当前js脚本,同步ajax时,脚本顺序执行;异步ajax时,异步执行,所谓异步执行就是,执行到ajax时,不等请求是否返回,直接执行ajax之后的js语句。