| 一、前言 |
大约在夏季,我们谈过ES6的Promise(详见here),其实在ES6前jQuery早就有了Promise,也就是我们所知道的Deferred对象,宗旨当然也和ES6的Promise一样,通过链式调用,避免层层嵌套,如下:
//jquery版本大于1.8function runAsync(){ var def = $.Deferred();
setTimeout(function(){
console.log('I am done');
def.resolve('whatever');
}, 1000); return def;
}
runAsync().then(function(msg){
console.log(msg);//=>打印'whatever'}).done(function(msg){
console.log(msg);//=>打印'undefined'});注:从jQuery1.8版本开始,then方法会返回一个新的受限制的deferred对象,即deferred.promise()—后续源码解读中我们会更加全面地了解到。因此,上述代码done中会打印’undefined’。
好了,通过上述示例代码,短暂的回顾了jQuery的Deferred使用后,我们一起来看看jQuery是怎么实现Deferred,当然解读jQuery的版本是大于1.8。
二、jQuery之Deferred源码剖析
延伸阅读
学习是年轻人改变自己的最好方式
我想了解如何学习 |

