Deferred 异步模型

Deferred 在 jQuery 和 Twisted 框架中都有出现,其思想都是相似的,以下以 Jquery 来写。

传统的 Ajax 调用

$.ajax() 在默认的情况下是以非阻塞的方式调用的,即 async = true,这里所说的异步,既是在业务层面的异步,也就是页面同步加载完框架后再加载数据的这种模式,又是在代码层面的异步,ajax 函数立即会返回,然后执行下一条语句。

在传统的 Ajax 调用时,我们可以将请求写在一个 settings 里面,然后直接传递给 ajax(),这个 settings 包含了请求的 url 地址和当返回数据后执行的回调函数。在下面的代码中,当 test.html 返回正常时,就会弹出框提示成功调用。

// 来自参考文档
$.ajax({
    url: "test.html",
    success: function(){
      alert("成功调用");
    },
    error:function(){
      alert("调用出错");
    }
  });

如果需求想要在页面返回的时候做更多的事情,那么我们需要在 success 里面添加函数,可能再会嵌套一层代码,可能让代码变得混乱。

全新的链式写法

$.ajax("test.html")
  .done(function(){ alert("成功调用"); })
  .fail(function(){ alert("调用出错"); })
   .done(function(){ alert("第二个回调函数!");} );

那么采用全新的链式写法以后,减少了回调的嵌套,代码可读性变得更高了。

参考文档

-jQuery的deferred对象详解 -JavaScript Promise 告别异步乱嵌套

转载于:https://my.oschina.net/shinedev/blog/521150

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值