软件发中有什么老问题?技术发展迅速,用户的需求增加更快,软件的代码库也会随需求增长快速膨胀。 在这种情况下,如何保证代码质量?如何控制代码的复杂度?如何维持代码的可维护性?这些就成了软件发的大问题。业界的同仁们为了解决这些老问题做了各种努力,函数式编程和响应式编程就是在实践中被证明行之有效的两种方法。 RxJS兼具函数式和响应式两种编程方式的特,RxJS擅长处理异步操作,因为它对数据采用“推”的处理方式,当一个数据产生的时候,被推送给对应的处理函数,这个处理函数不用关心数据是同步产生的还是异步产生的,这样就把发者从命令式异步处理的枷锁中解放了出来。
售 价:¥
纸质售价:¥64.20购买纸书
温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印
为你推荐
前言
第1章 函数响应式编程
1.1 一个简单的RxJS例子
1.2 函数式编程
1.2.1 什么是函数式编程
1.2.2 为什么函数式编程最近才崛起
1.2.3 函数式编程和面向对象编程的比较
1.3 响应式编程
1.4 Reactive Extension
1.5 RxJS是否是函数响应式编程
1.6 函数响应式编程的优势
1.7 本章小结
第2章 RxJS入门
2.1 RxJS的版本和运行环境
2.2 Observable和Observer
2.2.1 观察者模式
2.2.2 迭代器模式
2.2.3 创造Observable
2.2.4 跨越时间的Observable
2.2.5 永无止境的Observable
2.2.6 Observable的完结
2.2.7 Observable的出错处理
2.2.8 Observer的简单形式
2.3 退订Observable
2.4 Hot Observable和Cold Observable
2.5 操作符简介
2.6 弹珠图
2.7 本章小结
第3章 操作符基础
3.1 为什么要有操作符
3.2 操作符的分类
3.2.1 功能分类
3.2.2 静态和实例分类
3.3 如何实现操作符
3.3.1 操作符函数的实现
3.3.2 关联Observable
3.3.3 改进的操作符定义
3.3.4 lettable/pipeable操作符
3.4 本章小结
第4章 创建数据流
4.1 创建类操作符
4.2 创建同步数据流
4.2.1 create:毫无神奇之处
4.2.2 of:列举数据
4.2.3 range:指定范围
4.2.4 generate:循环创建
4.2.5 repeat:重复数据的数据流
4.2.6 三个极简的操作符:empty、never和throw
4.3 创建异步数据的Observable对象
4.3.1 interval和timer:定时产生数据
4.3.2 from:可把一切转化为Observable
4.3.3 fromPromise:异步处理的交接
4.3.4 fromEvent
4.3.5 fromEventPattern
4.3.6 ajax
4.3.7 repeatWhen
4.3.8 defer
4.4 本章小结
第5章 合并数据流
5.1 合并类操作符
5.1.1 concat:首尾相连
5.1.2 merge:先到先得快速通过
5.1.3 zip:拉链式组合
5.1.4 combineLatest:合并最后一个数据
5.1.5 withLatestFrom
5.1.6 解决glitch
5.1.7 race:胜者通吃
5.1.8 startWith
5.1.9 forkJoin
5.2 高阶Observable
5.2.1 高阶Observable的意义
5.2.2 操作高阶Observable的合并类操作符
5.2.3 进化的高阶Observable处理
5.3 本章小结
第6章 辅助类操作符
6.1 数学类操作符
6.1.1 count:统计数据个数
6.1.2 max和min:最大最小值
6.1.3 reduce:规约统计
6.2 条件布尔类操作符
6.2.1 every
6.2.2 find和findIndex
6.2.3 isEmpty
6.2.4 defaultIfEmpty
6.3 本章小结
第7章 过滤数据流
7.1 过滤类操作符的模式
7.1.1 filter
7.1.2 first
7.1.3 last
7.1.4 take一族操作符
7.1.5 计时的点击计数网页程序
7.1.6 skip
7.1.7 skipWhile和skipUntil
7.2 回压控制
7.2.1 throttle和debounce
7.2.2 auditTime和audit
7.2.3 sampleTime和sample
7.2.4 根据数据序列做回压控制
7.3 其他过滤方式
7.3.1 ignoreElements
7.3.2 elementAt
7.3.3 single
7.4 本章小结
第8章 转化数据流
8.1 转化类操作符
8.2 映射数据
8.2.1 map
8.2.2 mapTo
8.2.3 pluck
8.3 缓存窗口:无损回压控制
8.3.1 windowTime和bufferTime
8.3.2 windowCount和bufferCount
8.3.3 windowWhen和bufferWhen
8.3.4 windowToggle和bufferToggle
8.3.5 window和buffer
8.4 高阶的map
8.4.1 concatMap
8.4.2 mergeMap
8.4.3 switchMap
8.4.4 exhaustMap
8.4.5 高阶的MapTo
8.4.6 expand
8.5 数据分组
8.6 累计数据
8.6.1 scan
8.6.2 mergeScan
8.7 本章小结
第9章 异常错误处理
9.1 异常处理不可避免
9.2 异常处理的难点
9.2.1 try/catch只支持同步运算
9.2.2 回调函数的局限
9.2.3 Promise的异常处理
9.3 RxJS的异常处理
9.3.1 catch
9.3.2 retry
9.3.3 retryWhen
9.3.4 finally
9.4 重试的本质
9.5 本章小结
第10章 多播
10.1 数据流的多播
10.2 Hot和Cold数据流差异
10.3 Subject
10.3.1 两面神Subject
10.3.2 用Subject实现多播
10.3.3 makeHot操作符
10.3.4 Subject不能重复使用
10.3.5 Subject可以有多个上游
10.3.6 Subject的错误处理
10.4 支持多播的操作符
10.4.1 multicast
10.4.2 publish
10.4.3 share
10.5 高级多播功能
10.5.1 publishLast和AsyncSubject
10.5.2 pubishReplay和ReplaySubject
10.5.3 publishBehavior和BehaviorSubject
10.6 本章小结
第11章 掌握时间的Scheduler
11.1 Scheduler的调度作用
11.2 RxJS提供的Scheduler
11.3 Scheduler的工作原理
11.3.1 单线程的JavaScript
11.3.2 调用栈和事件循环
11.3.3 Scheduler如何工作
11.4 支持Scheduler的操作符
11.4.1 创造类和合并类操作符
11.4.2 observeOn
11.4.3 subscribeOn
11.5 本章小结
第12章 RxJS的调试和测试
12.1 调试方法
12.1.1 无用武之地的Debugger
12.1.2 利用日志来调试
12.1.3 利用do来插入调试代码
12.1.4 改进的日志调试方法
12.1.5 数据流依赖图
12.1.6 弹珠图
12.2 单元测试
12.2.1 单元测试的作用
12.2.2 RxJS天生适合单元测试
12.2.3 单元测试的结构
12.2.4 RxJS单元测试中的时间
12.2.5 操纵时间的TestScheduler
12.2.6 可测试性代码
12.3 本章小结
第13章 用RxJS驱动React
13.1 React简介
13.1.1 为什么选择React
13.1.2 React如何工作
13.2 简单的React应用Counter
13.3 利用RxJS管理React状态
13.3.1 利用Subject作为桥梁
13.3.2 用高阶组件连接RxJS
13.4 本章小结
第14章 Redux和RxJS结合
14.1 Redux简介
14.1.1 Redux的工作方式
14.1.2 构建Redux应用
14.2 用RxJS实现Redux
14.3 Redux和RxJS比较
14.4 Redux-Observable:Redux和RxJS的结合
14.5 本章小结
第15章 RxJS游戏开发
15.1 breakout的历史
15.2 程序设计
15.3 用RxJS实现breakout
15.4 本章小结
结语
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜