RxJS pipe

(1). pipe 指令

将一组 map, filter, scan, tap 等函数串起来执行,然后返回原 Observable 对象。

一般用在正式取得返回的 Observable 之前,做些预处理,比如记日志、错误处理等切面处理。

/**
* Used to stitch together functional operators into a chain.
* @method pipe
* @return {Observable} the Observable result of all of the operators having
* been called in the order they were passed in.
*
* @example
*
* import { map, filter, scan } from 'rxjs/operators';
*
* Rx.Observable.interval(1000)
*   .pipe(
*     filter(x => x % 2 === 0),
*     map(x => x + x),
*     scan((acc, x) => acc + x)
*   )
*   .subscribe(x => console.log(x))
*/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

(2). scan 函数

  • 两个参数,第一个参数是累加函数,第二个参数是累加的初始值。

  • 功能是累加 (filter 功能是过滤,map 功能是改值, tap 功能是插入切面)

  • https://www.learnrxjs.io/operators/transformation/scan.html

(3). tap 函数

  • 老版本叫 do

  • 相当于切面,在 Observable 返回之前做自己定制的操作,如记日志等。

  • https://github.com/ReactiveX/rxjs/blob/5.5.2/src/operators/tap.ts#L14

最近更新: 10/9/2018, 10:42:31 PM