函数编程库-RXJS

Scroll Down

流程

创建一个观察者new Observable,使用订阅 subscribe触发事件。

Observable

Observable 中包含 next、error、complete三个函数。next函数发出下一个通知提供行为;error函数,报错信息;complete函数,完成订阅。

Hot 、Cold

  1. Hot Observale:(例如: DOM事件、State、Subjects多播)
    每次订阅都会返回相同值、不会影响主要逻辑行为
  2. Cold Observable:(例如: HTTP调用、timer延迟、interval间隔)
    每个订阅的所有值都是独立生成的。可观察。

创建函数

  1. of:创建一个Observable,发出一个集合
  2. from:将参数值转换成Observable。
    例如:from([A,B,C])、from(Promise)
  3. fromEvent:创建一个事件Observable。
    例如:fromEvent(Button,‘click’)
  4. timer: 延迟,与setTimeout差不多。
    例如: timer(1000)
  5. interval:间隔,与setInterval差不多。
    例如: interval(1000)
  6. forkJoin: 等所有的Observable响应,才发出响应,与promise中all用法差不多。
    例如: forkJoin([A,B])
  7. combineLatest: 合并Observable响应,特点是每次取最新值得区域。
    例如:combineLatest([A,B])

管道

  1. pipe: 管道,包含多个操作函数。
    例如:pipe(filter(val=>val > 0),
    map(val=> val * 2),...)

操作符函数

  1. filter: 过滤器。
    例如: filter(val=>val > 0)
  2. map: 遍历,可用于将值转换成其他值。
    例如:map(val=>val.name)
  3. tap: 打印
    例如:tap(val=>log(val))
  4. debounceTime: 防抖。
    例如:debounnceTime(1000)
  5. catchError: 错误捕获。
    例如:catchError(error=>of('error'))

展开操作函数

(报错时,主订阅将会终止。(可用catchError、Empty避免)

  1. concatMap:等待上一个订阅结束,才执行下一个订阅。
    确保一个接一个处理。
    例如:concatMap(val=> of())
  2. switchMpa: 每次获取最新得订阅。
  3. mergaMap: 合并,多个订阅合并成单个订阅输出。

多播通知

相当于全局变量

  1. subject:订阅同一个值。
    例如:new Subject()
  2. behaviorSubject: 可设置默认值。
    例如:new BehaviorSubject(false)