关于ajax的async问题

关于ajax的async为true和false的问题,这里做一测试的例子:

function testAjax(){
        var url = "/Test/test/testServlet";
        var te = "aaa";
        jQuery.ajax({
            url: url,
            type: "GET",
            data: {},
            async:true,
            dataType: "json",
            success:function(data){
                te += "bbb";
            },
            error:function(e, jqXHR, textStatus, errorThrown){
            }            
        })
        te += "ccc";
    alert(123);
return te; } function test(){ var t = testAjax(); alert(t); }

当设为true时,则请求和当前js"主过程(我也不知道在js里边叫什么,暂时这么叫吧)"异步,即"各做各的",经过测试,最后test()方法会得到aaacccbbb,因为请求需要一定的时间,所以te先加'ccc',待ajax请求完成后,te再加上'bbb';而如果把alter(123)放到te+="ccc"之前,当执行到alert(123)时,代码等待人去点击确认alert信息(通常本地请求的速度都会比我们手动点一下alert()快些,即当我们点了alert之后,请求已经完成,te已经是'aaabbb‘),然后加上'ccc'即得到'aaabbbccc';

当设为false时,请求不进行异步处理,则此时,代码的运行顺序就会先完成请求之后,然后再向下执行,则此时就可以固定为一种情况('aaabbbccc');

这里加入了一个alert(123);目的在于让"主线程"等待请求的完成,以便看到"主线程"在异步为真的时候,确实先向下执行,通过人为的方式,来展现异步处理的两种情况;此处,还有一点启示:那就是个结果为不管怎么样,都会包含'bbb','ccc'即一定是等到主过程和请求过程都完成之后,才返回的,当然这只是一个推断,没有充足的理由,还请阁下指点一二;

如有不对之处,还请多多指正;

 

 

 

转载于:https://www.cnblogs.com/roilat/archive/2013/06/07/3124109.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值