阅读jQuery--Deferred
来源:互联网 发布:苹果mac没有声音 编辑:程序博客网 时间:2024/04/30 06:42
其实在callbacks的基础上再来看deferred还是件挺容易的事情。不过deferred在设计上还是有值得可以学习的地方。下面就个人的理解解读一二:
整个deferred的最后是return deferred,deferred是由私有变量promise中的promise方法extend promise本身得到的一个对象。看上去有点绕了。。。其实promise(deferred的私有变量)就是deferred的核,他定义了deferred中
state():deferred状态
always():将一个方法同时添加到done和fail
then():将done,fail,progress(前三个参数按顺序)依次添加到一个新建的deferred中(执行的时候按照.then()的顺序执行resolve/reject/notify)。在源码中一旦调用了then,就会得到一个新的deferred,同时在旧的deferred中会使用done/fail/progress方法添加参数中传来的方法,旧的deferred一旦执行,则会执行刚才添加的方法,同时判断这个方法返回的对象是不是有promise属性(比如jquery的xhr),有的话则将返回的对象的resolve/reject/notify方法添加到新的deferred的done/fail/progress(这里可以避免在异步的时候先执行后面的方法);如果没有promise属性则resolve/reject/notify新的deferred。
promise():接受一个对象参数,并将此对象extend本deferred的promise对象返回给调用者(就是这里说的promise)。
done(),fail(),progress():添加执行方法。
pipe():等于then();
然后是promise对象没有方法:
resolve(),reject(),notify():执行通过done/fail/progress添加的方法。
deferred在new的时候也可以接受一个func当参数,此时这个func的上下文和第一个参数就是这个new 的deferred。
- 阅读jQuery--Deferred
- 【阅读】jQuery.Deferred相关资料
- jQuery Deferred
- jquery deferred
- jQuery Deferred模块详解
- jQuery Deferred模块详解
- 详解Jquery deferred 对象
- jQuery.Deferred对象
- jquery ajax deferred
- jQuery的deferred对象
- jquery 的deferred对象
- jQuery的deferred对象
- jQuery的Deferred对象
- 学习jQuery.Deferred
- jQuery - Deferred 对象使用
- jquery Deferred 数组
- jQuery的deferred对象
- jQuery.Deferred(func)总结
- http://bsy.sz.bendibao.com/bsyDetail/486.html
- 弧度和角度的转换
- puttygen convert ppk file to xshell key file
- Linux内核gpiolib文档
- STM32-USMART学习笔记
- 阅读jQuery--Deferred
- 【五方面搞定电脑关机问题】
- 21世纪什么最重要?要会写代码!
- C# conn.open() 外部表不是预期的格式
- C++之多态性与虚函数
- Ubuntu下构建gstreamer开发环境
- linux下mysql的安装、目录结构、配置
- 如何查看linux机器是32位还是64位
- 时间的显示转化