jQuery之deferred对象详解

前端开发 作者: 2024-08-20 19:45:01
一、什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异步的操作(比如ajax读取服务器数据),也有同步的操作(比如遍历一个大型数组),它们
$.ajax({

    url: "test.html",    success: function(){
      alert("哈哈,成功了!");
    },    error:(){
      alert("出错啦!");
    }

  });
 $.ajax("test.html")
      .done(function(){ alert("哈哈,成功了!"); })
      .fail(function(){ alert("出错啦!"); });
$.ajax("test.html")
  .done();} )
  .fail(function(){ alert("出错啦!"); } )
  .done(function(){ alert("第二个回调函数!");} );
$.when($.ajax("test1.html"),$.ajax("test2.html"))
  .done(); })
  .fail(); });
  
var wait = (){
    var tasks = (){
      alert("执行完毕!");
    };
    setTimeout(tasks,5000);
  };
$.when(wait())
  .done(function(){ alert("出错啦!"); });
var dtd = $.Deferred(); // 新建一个deferred对象
(dtd){
  (){
    alert("执行完毕!");
    dtd.resolve();  改变deferred对象的执行状态
  };
  setTimeout(tasks,1)">);
  return dtd;
};
$.when(wait(dtd))
  .done(function(){ alert("出错啦!"); });
 新建一个Deferred对象
  (dtd){
    );
      dtd.reject();  改变Deferred对象的执行状态
    };
    setTimeout(tasks,1)">);
     dtd;
  };
  $.when(wait(dtd))
  .done(function(){ alert("出错啦!"); });
);
      dtd.resolve(); ); });
  dtd.resolve();
ar dtd = $.Deferred(); return dtd.promise();  返回promise对象
  };

  var d = wait(dtd);  新建一个d对象,改为对这个对象进行操作
  $.when(d)
  .done(); });
  d.resolve();  此时,这段代码会报错,因为d不存在resolve方法
(){
     新建一个deferred对象
    (){
        alert("执行完毕!");
       dtd.resolve();    };
   setTimeout(tasks,1)">);
    dtd.promise();
};
$.when( wait())
.done(); })
.fail(function(){ alert("出错啦!"); });
$.Deferred(wait)
  .done(function(){ alert("出错啦!"); });
 生成Deferred对象
  );
  };

  dtd.promise(wait);
  wait.done(); });
  wait(dtd);
$.when($.ajax( "/main.php" ))
  .then(successFunc,failureFunc );
$.ajax( "test.html" )
  .always( function() { alert("已执行!");} );
原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
本文链接:http://www.jiecseo.com/news/show_65688.html