打赏

Jquery deferred 对象

本文参考自:http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_deferred_object

1、解释

deferred对象就是jQuery的回调函数解决方案。在英语中,defer的意思是"延迟",所以deferred对象的含义就是"延迟"到未来某个点再执行。

2、ajax链式写法

$.ajax()操作完成后,如果使用的是低于1.5.0版本的jQuery,返回的是XHR对象,你没法进行链式操作;如果高于1.5.0版本,返回的是deferred对象,可以进行链式操作。

$.ajax("test.html")
  .done(function(){ alert("哈哈,成功了!"); })
  .fail(function(){ alert("出错啦!"); });

指定同一操作的多个回调函数

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

回调函数可以添加任意多个,它们按照添加顺序执行。

3、 $.when() 为多个操作指定回调函数。

4、deferred.then()

done()和fail()合在一起写,这就是then()方法。

  $.when($.ajax( "/main.php" ))
  .then(successFunc, failureFunc );

5、deferred.always()

不管调用的是deferred.resolve()还是deferred.reject(),最后总是执行。

  $.ajax( "test.html" )
  .always( function() { alert("已执行!");} );

 

 

https://www.jb51.net/article/33342.htm

那么到底为什么要用链式操作呢?
为了更好的异步体验 

posted @ 2018-04-24 10:31  孟繁贵  阅读(134)  评论(0编辑  收藏  举报
TOP