个人感觉dtd之后会用,所以在这里记录些常用写法

  1.这是将dtd对象置于方法体里的

  var wait = function(dtd){

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

    var tasks = function(){

      alert("执行完毕!");

      dtd.resolve(); // 改变Deferred对象的执行状态

    };

    setTimeout(tasks,5000);

    return dtd.promise(); // 返回promise对象

  };

  $.when(wait())

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

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

  2.直接把函数传入$.Deferred():

    var wait = function(dtd){
        var tasks = function(){
            alert("执行完毕!");
            dtd.resolve(); // 改变Deferred对象的执行状态
        };
        setTimeout(tasks,5000);
        return dtd;
    };
    $.Deferred(wait)
        .done(function(){ alert("哈哈,成功了!"); })
        .fail(function(){ alert("出错啦!"); });

  3.直接在wait对象上部署deferred接口

var dtd = $.Deferred(); // 生成Deferred对象

  var wait = function(dtd){

    var tasks = function(){

      alert("执行完毕!");

      dtd.resolve(); // 改变Deferred对象的执行状态

    };

    setTimeout(tasks,5000);

  };

  dtd.promise(wait);

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

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

  wait(dtd);