标签:wait fun nbsp ati any mis 就是 返回 log
熟悉的东西,长时间不用很快也就忘了,挺多还蛮可惜的。。
deferred之前用过不少次,这次心血来潮总结一下,主要还是参考阮老师的这篇文章。
deferred对象被jquery推出,作为操作回调的一种方式。
譬如ajax请求,如果想在请求成功后执行某些操作,比较常见的方法是在配置中定义好`success()`回调函数。
如果利用$.ajax的deferred方式,$.ajax()会返回一个deferred对象,在该对象后串联需要进行操作,被链入的操作并不会立刻执行,而是在被推迟到特定条件情况下才会触发
如:
$.ajax("test.html")
.done(function(){ alert("哈哈,成功了!"); })
.fail(function(){ alert("出错啦!"); });
之所以称为deferred,应该就是因为这种推迟执行的特性所致。
不单单利用jquery已经封装好的deferred组件,也可以自己创建deferred组件,在合适的时机触发成功或失败,从而达到回调的特性。
一个可能在很多地方都见过的例子,通过deferred对象,在外部监控某操作执行完后,进行相应操作:
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("出错啦!"); });
标签:wait fun nbsp ati any mis 就是 返回 log
原文地址:https://www.cnblogs.com/mosakashaka/p/12608077.html