deferred对象

原文地址:http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_deferred_object.html

 var wait = function(){

    var dtd = $.Deferred(); //在函数内部,新建一个Deferred对象

    var tasks = function(){

      alert("执行完毕!");

      dtd.resolve(); // 改变Deferred对象的执行状态 resolve()已完成  reject()拒绝 

    };

     setTimeout(tasks,5000);

    return dtd.promise(); // 返回promise对象 可以防止下面修改到dtd的执行状态

  };

  $.when(wait())

  .done(function(){ alert("哈哈,成功了!"); })

  .fail(function(){ alert("出错啦!"); });

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

---------------------------------------------------------------------------------------------

var haha=function(){

var dtd=$.Deferred()

$('p').click(function(){

 setTimeout(function(){

  $('p').text(22222222222222)

  dtd.resolve(); 

},2000)

 })

 return dtd.promise()

  }

 $.when(haha()).done(function(){

  alert(999)

}).fail(function(){

 alert('cuocuocuoc')

 })

 

你可能感兴趣的:(deferred)