js Deferred的使用
jQuery.Deferred() |
创建一个新的Deferred对象的构造函数,可以带一个可选的函数参数,它会在构造完成后被调用。 |
jQuery.when() |
通过该方式来执行基于一个或多个表示异步任务的对象上的回调函数 |
jQuery.ajax() |
执行异步Ajax请求,返回实现了promise接口的jqXHR对象 |
deferred.then(resolveCallback,rejectCallback) |
添加处理程序被调用时,递延对象得到解决或者拒绝的回调。 |
deferred.done() |
当延迟成功时调用一个函数或者数组函数. |
deferred.fail() |
当延迟失败时调用一个函数或者数组函数.。 |
deferred.resolve(ARG1,ARG2,...) |
调用Deferred对象注册的‘done’回调函数并传递参数 |
deferred.resolveWith(context,args) |
调用Deferred对象注册的‘done’回调函数并传递参数和设置回调上下文 |
deferred.isResolved |
确定一个Deferred对象是否已经解决。 |
deferred.reject(arg1,arg2,...) |
调用Deferred对象注册的‘fail’回调函数并传递参数 |
deferred.rejectWith(context,args) |
调用Deferred对象注册的‘fail’回调函数并传递参数和设置回调上下文 |
deferred.promise() |
返回promise对象,这是一个伪造的deferred对象:它基于deferred并且不能改变状态所以可以被安全的传 |
实例
var data; var wait = function(){ var dtd = $.Deferred(); // 新建一个Deferred对象 var tasks = function(){ data='处理完成'; var args = 'byebye'; dtd.resolve(args); }; setTimeout(tasks,3000); return dtd.promise(); }; wait().done(function(args){ $("#dd").text(data); alert(args); });