我们都知道jQuery为ajax请求封装了success和error两个回调方法,其实jQuery也实现了为非ajax请求的普通方法也设计了绑定回调函数的方法。
当一个方法需要等待另一个耗时很长的方法完成之后才能执行的时候,我们非常希望可以监听这个耗时的方法。
示例:
var wait = function(){
var deferred = $.Deferred(); //在函数内部,新建一个Deferred对象
var tasks = function(){
alert("执行完毕!");
deferred.resolve(); // 改变Deferred对象的执行状态
};
setTimeout(tasks,5000);
return deferred.promise(); // 返回promise对象
};
$.when(wait())
.done(function(){ alert("哈哈,成功了!"); })
.fail(function(){ alert("出错啦!"); });