ajax属性async 同步异步区别(入门使用级)

        一般来讲使用ajax功能的目的,就是能在页面不重新加载的情况下,与后台交互刷新局部页面信息。再者就是相应用户的局部操作,返回结果,一般以弹窗提示作为结果。

        下面进入正题,同步异步的区别和几个应用场景:

async:false(同步请求):执行该部分的时候,停止页面的所有加载动作,等待该请求的返回结果,返回任意结果后才能继续后续加载。

    缺点:页面加载过程中,同步调用后台方法,后台响应较慢(可以sleep测试),页面就会出现加载了部分模块,状态栏就会一直在那旋转,等待继续加载(假死)。

    优点:可以是控制页面的加载顺序,A模块处理成功(数据变更,或样式变更),B模块才开始加载(不加载,或多种模板选择)。也能防止多模块相同变量值被覆盖。


async:true(异步请求):async默认的设置值为true,这种情况为异步方式,就是说当ajax发送请求后,在等待server端返回的这个过程中,前台会继续 执行ajax块后面的脚本,直到server端返回正确的结果才会去执行success,也就是说这时候执行的是两个线程,ajax块发出请求后一个线程 和ajax块后面的脚本(另一个线程);

例如:

$.ajax({  

            type:"POST", 
            url:"", 
            success:function(){  
               f1(); 
               f2(); 
          } 
    } )

    在上例中,当ajax块发出请求后,他将停留f1(),等待server端的返回,但同时(在这个等待过程中),前台会去执行f2(),也就是说,在这个时候出现两个线程,我们这里暂且说为f1() 和f2()。

          当把asyn设为false时,这时ajax的请求时同步的,也就是说,这个时候ajax块发出请求后,他会等待在f1()这个地方,不会去执行f2(),直到f1()执行完毕。

缺点:使用不当的情况下,如f2()需要依赖f1()的执行结果,但是异步时线程并行了,可能会出现各种随机异常,比如f1过程中会变更多个全局变量,f2获取使用,但是f1此时只变更了1个(3个、4个),就会导致f2会出现多种异常结果。

优点:暂就不描述了

猜你喜欢

转载自blog.csdn.net/a290450134/article/details/80938836