简单说,deferred对象就是jQuery的回调函数解决方案。在英语中,defer的意思是”延迟”,所以deferred对象的含义就是”延迟”到未来某个点再执行。
本文只是简单的分享一下学习过程中的心得,具体的内容推荐阅读阮一峰老师的博客 点我跳转
创建jquery延时对象deferred
创建一个延时对象
1 2 3 4 5
| var def = $.Deferred(function(deferred){ console.log(deferred); })
|
在函数内部写入触发事件
1 2 3
| deferred.notify(); deferred.resolve(); deferred.reject();
|
对应的代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| var def = $.Deferred(function(deferred){ var timer = setInterval(function(){ deferred.notify('请稍后,正在创建中...'); },500); setTimeout(function(){ clearInterval(timer); if(Math.random() < 0.5){ var div = document.createElement('div'); div.style.width = '100px'; div.style.height = '100px'; div.style.border = '1px solid black'; document.body.appendChild(div); deferred.resolve(div); }else{ deferred.reject('创建失败'); } },1000); })
|
def对象调用方法–用来监听触发事件的执行结果,可以参考ajax
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| def.progress(function(str){
console.log(str); }).done(function(div){
div.style.backgroundColor = 'red'; alert('创建成功'); }).fail(function(str){
alert(str); }).always(function(){
alert('任务结束'); })
|
以上只是deferred的一些基础知识, 还有一些其他的知识点, 因为能力有限不一一介绍了