今天看EmberJS文档时,才发现,原来JQuery从1.5之后,提供了一个defered对象,用来简化异步和耗时的操作。
网上有篇文章解释得很清楚:
http://blog.allenm.me/2012/01/jquery_deferred_promise_method/
有了defered ,ajax 操作可以写成:
$.ajax({url:....})
.done(function(){....})
.faile(function(){....});
defered 除了在Ajax 中应用外,也可以用在自定义方法中
function wait5(dtd){
var taskDone=function(){
......
dtd.resovle()
}
setTimeout(taskDone,5000);
return dtd.promise()
}
$.Dererred(wait5)
.done(function(){alert('success')})
.faile(functin(){alert('fail')});