ajax同步与异步的坑

 
之前工作中一个需求,需要动态的添加一组下拉菜单并为这个菜单绑定一个插件,很明显获取数据用Ajax,这本身是没错的,坑就坑在我用了 同步请求,当服务器端正确返回数据时再去执行下一个方法,这逻辑本身没有问题。所以当我写完之后,我发现页面加载速度及其的慢,我删除了一些多余的和http请求,仍然不能解决这个问题,然后我突然想到了Ajax同步和异步的问题,改成异步之后页面数据加载就快了很多,希望能正确的使用同步和异步。
 
在Jquery中ajax方法中async用于控制同步和异步,当async值为true时是异步请求,当async值为fase时是同步请求。ajax中async这个属性,用于控制请求数据的方式,默认是true,即默认以异步的方式请求数据。
 
1、async值为true (异步)
当ajax发送请求后,在等待server端返回的这个过程中,前台会继续 执行ajax块后面的代码,直到server端返回正确的结果才会再去执行success,也就是说这时候执行的是两个线程,ajax块发出请求后一个线程 和ajax块后面的脚本(另一个线程)
 
2、async值为false (同步)
Ajax发出请求之后在等server端返回的过程中不会再执行任何代码,暂停在当前的请求中,直到server端正确返回数据之后,会先执行Ajax中success的回调方法,回调执行完成之后才会继续执行余下的代码。
 
原文地址:https://www.cnblogs.com/xieyao/p/8467920.html