定 價:¥89.00
作 者: | 程墨 |
出版社: | 機械工業(yè)出版社 |
叢編項: | |
標(biāo) 簽: | 暫缺 |
ISBN: | 9787111596646 | 出版時間: | 2018-04-01 | 包裝: | |
開本: | 16開 | 頁數(shù): | 字數(shù): |
目錄 Contents
前言
第1章 函數(shù)響應(yīng)式編程1
1.1 一個簡單的RxJS例子1
1.2 函數(shù)式編程5
1.2.1 什么是函數(shù)式編程5
1.2.2 為什么函數(shù)式編程最近才崛起11
1.2.3 函數(shù)式編程和面向?qū)ο缶幊痰谋容^13
1.3 響應(yīng)式編程14
1.4 Reactive Extension15
1.5 RxJS是否是函數(shù)響應(yīng)式編程16
1.6 函數(shù)響應(yīng)式編程的優(yōu)勢17
1.7 本章小結(jié)18
第2章 RxJS入門19
2.1 RxJS的版本和運行環(huán)境19
2.2 Observable和Observer24
2.2.1 觀察者模式24
2.2.2 迭代器模式25
2.2.3 創(chuàng)造Observable26
2.2.4 跨越時間的Observable28
2.2.5 永無止境的Observable29
2.2.6 Observable的完結(jié)30
2.2.7 Observable的出錯處理31
2.2.8 Observer的簡單形式32
2.3 退訂Observable33
2.4 Hot Observable和Cold Observable35
2.5 操作符簡介37
2.6 彈珠圖39
2.7 本章小結(jié)41
第3章 操作符基礎(chǔ)42
3.1 為什么要有操作符42
3.2 操作符的分類44
3.2.1 功能分類45
3.2.2 靜態(tài)和實例分類46
3.3 如何實現(xiàn)操作符49
3.3.1 操作符函數(shù)的實現(xiàn)49
3.3.2 關(guān)聯(lián)Observable53
3.3.3 改進的操作符定義55
3.3.4 lettable/pipeable 操作符60
3.4 本章小結(jié)68
第4章 創(chuàng)建數(shù)據(jù)流69
4.1 創(chuàng)建類操作符70
4.2 創(chuàng)建同步數(shù)據(jù)流70
4.2.1 create:毫無神奇之處71
4.2.2 of:列舉數(shù)據(jù)71
4.2.3 range:指定范圍73
4.2.4 generate:循環(huán)創(chuàng)建74
4.2.5 repeat:重復(fù)數(shù)據(jù)的數(shù)據(jù)流75
4.2.6 三個極簡的操作符:empty、never和throw78
4.3 創(chuàng)建異步數(shù)據(jù)的Observable對象80
4.3.1 interval和timer:定時產(chǎn)生數(shù)據(jù)80
4.3.2 from:可把一切轉(zhuǎn)化為Observable82
4.3.3 fromPromise:異步處理的交接84
4.3.4 fromEvent85
4.3.5 fromEventPattern87
4.3.6 ajax88
4.3.7 repeatWhen89
4.3.8 defer91
4.4 本章小結(jié)92
第5章 合并數(shù)據(jù)流93
5.1 合并類操作符94
5.1.1 concat:首尾相連94
5.1.2 merge:先到先得快速通過96
5.1.3 zip:拉鏈?zhǔn)浇M合99
5.1.4 combineLatest:合并最后一個數(shù)據(jù)102
5.1.5 withLatestFrom109
5.1.6 解決glitch112
5.1.7 race:勝者通吃115
5.1.8 startWith115
5.1.9 forkJoin117
5.2 高階Observable118
5.2.1 高階Observable的意義119
5.2.2 操作高階Observable的合并類操作符120
5.2.3 進化的高階Observable處理124
5.3 本章小結(jié)128
第6章 輔助類操作符129
6.1 數(shù)學(xué)類操作符129
6.1.1 count:統(tǒng)計數(shù)據(jù)個數(shù)130
6.1.2 max和min:最大最小值130
6.1.3 reduce:規(guī)約統(tǒng)計131
6.2 條件布爾類操作符133
6.2.1 every134
6.2.2 find和findIndex135
6.2.3 isEmpty137
6.2.4 defaultIfEmpty138
6.3 本章小結(jié)138
第7章 過濾數(shù)據(jù)流139
7.1 過濾類操作符的模式140
7.1.1 filter141
7.1.2 first142
7.1.3 last144
7.1.4 take一族操作符145
7.1.5 計時的點擊計數(shù)網(wǎng)頁程序150
7.1.6 skip151
7.1.7 skipWhile和skipUntil151
7.2 回壓控制152
7.2.1 throttle和debounce154
7.2.2 auditTime和audit164
7.2.3 sampleTime和sample166
7.2.4 根據(jù)數(shù)據(jù)序列做回壓控制168
7.3 其他過濾方式171
7.3.1 ignoreElements172
7.3.2 elementAt172
7.3.3 single173
7.4 本章小結(jié)173
第8章 轉(zhuǎn)化數(shù)據(jù)流174
8.1 轉(zhuǎn)化類操作符174
8.2 映射數(shù)據(jù)175
8.2.1 map176
8.2.2 mapTo177
8.2.3 pluck178
8.3 緩存窗口:無損回壓控制179
8.3.1 windowTime和bufferTime180
8.3.2 windowCount和bufferCount183
8.3.3 windowWhen和bufferWhen184
8.3.4 windowToggle和buffer-Toggle185
8.3.5 window和buffer186
8.4 高階的map188
8.4.1 concatMap189
8.4.2 mergeMap192
8.4.3 switchMap193
8.4.4 exhaustMap195
8.4.5 高階的MapTo195
8.4.6 expand196
8.5 數(shù)據(jù)分組196
8.6 累計數(shù)據(jù)200
8.6.1 scan200
8.6.2 mergeScan201
8.7 本章小結(jié)203
第9章 異常錯誤處理204
9.1 異常處理不可避免204
9.2 異常處理的難點206
9.2.1 try/catch只支持同步運算207
9.2.2 回調(diào)函數(shù)的局限207
9.2.3 Promise的異常處理209
9.3 RxJS的異常處理212
9.3.1 catch214
9.3.2 retry216
9.3.3 retryWhen217
9.3.4 finally220
9.4 重試的本質(zhì)221
9.5 本章小結(jié)223
第10章 多播225
10.1 數(shù)據(jù)流的多播225
10.2 Hot和Cold數(shù)據(jù)流差異228
10.3 Subject230
10.3.1 兩面神Subject230
10.3.2 用Subject實現(xiàn)多播233
10.3.3 makeHot 操作符234
10.3.4 Subject不能重復(fù)使用235
10.3.5 Subject可以有多個上游237
10.3.6 Subject的錯誤處理239
10.4 支持多播的操作符241
10.4.1 multicast241
10.4.2 publish253
10.4.3 share255
10.5 高級多播功能257
10.5.1 publishLast和Async-Subject258
10.5.2 pubishReplay和Replay-Subject259
10.5.3 publishBehavior和BehaviorSubject262
10.6 本章小結(jié)263
第11章 掌握時間的Scheduler265
11.1 Scheduler的調(diào)度作用265
11.2 RxJS提供的Scheduler268
11.3 Scheduler的工作原理269
11.3.1 單線程的JavaScript270
11.3.2 調(diào)用棧和事件循環(huán)272
11.3.3 Scheduler如何工作275
11.4 支持Scheduler的操作符279
11.4.1 創(chuàng)造類和合并類操作符279
11.4.2 observeOn281
11.4.3 subscribeOn282
11.5 本章小結(jié)283
第12章 RxJS的調(diào)試和測試284
12.1 調(diào)試方法284
12.1.1 無用武之地的Debugger285
12.1.2 利用日志來調(diào)試286
12.1.3 利用do來插入調(diào)試代碼287
12.1.4 改進的日志調(diào)試方法290
12.1.5 數(shù)據(jù)流依賴圖291
12.1.6 彈珠圖292
12.2 單元測試293
12.2.1 單元測試的作用294
12.2.2 RxJS天生適合單元測試297
12.2.3 單元測試的結(jié)構(gòu)298
12.2.4 RxJS單元測試中的時間303
12.2.5 操縱時間的TestScheduler306
12.2.6 可測試性代碼325
12.3 本章小結(jié)340
第13章 用RxJS驅(qū)動React341
13.1 React簡介341
13.1.1 為什么選擇React341
13.1.2 React如何工作343
13.2 簡單的React應(yīng)用Counter350
13.3 利用RxJS管理React狀態(tài)356
13.3.1 利用Subject作為橋梁356
13.3.2 用高階組件連接RxJS359
13.4 本章小結(jié)365
第14章 Redux和RxJS結(jié)合366
14.1 Redux簡介366
14.1.1 Redux的工作方式367
14.1.2 構(gòu)建Redux應(yīng)用368
14.2 用RxJS實現(xiàn)Redux372
14.3 Redux和RxJS比較374
14.4 Redux-Observable:Redux和RxJS的結(jié)合375
14.5 本章小結(jié)380
第15章 RxJS游戲開發(fā)381
15.1 breakout的歷史381
15.2 程序設(shè)計383
15.3 用RxJS實現(xiàn)breakout385
15.4 本章小結(jié)397
結(jié)語398