Reactive Programming with RxJS (读书笔记)

Reactive Programming with RxJS

  1. Rx.Observable.create(function(observer) { onNext/onCompleted ... }).subscribe(...)
    1. subscribe用于给Observable指定Observer
  2. Rx.DOM.get('/api/contents.json').subscribe(...
    1. Rx.DOM.get('/products').retry(5) //这个算子挺高级的
    2. Rx.DOM.jsonpRequest({url:..., jsonpCallback:...})
    3. Rx.DOM.fromWebSocket('ws://127.0.0.1:8080'); //这个有点意思,实时的事件流处理
      1. Rx.Observable.fromEvent(ws, 'message')... //WebScoket支持多工传输?
  3. Rx.Observable.from(['Adrià', 'Jen', 'Sergi'])... //从数组
    1. .fromEvent(document, 'mousemove') //特定元素的特定事件(内部使用了JS bind?)
      1. debounce(300) //至多300ms触发一次
    2. .fromPromise
  4. Rx.Observable.interval(200).map(...) //算子
    1. filter
    2. reduce
    3. scan
    4. flatMap(这让我想起了JS Promise中的race API)
    5. distinct(过滤重复的) / distinctUntilChanged(p 80)
    6. merge
    7. pluck(取出指定属性)
  5. Subject:既是Observable又是Observer(实际上可以看作一种内存缓冲对象)
    1. AsyncSubject(缓存单个的Ajax请求结果?)
    2. BehaviorSubject //When an Observer subscribes to a BehaviorSubject , it receives the last emitted value and then all the subsequent values.
    3. ReplaySubject //缓存全部?
  6. combineLatest:当一组Observable中任意一个有更新则触发onNext
    1. 似乎可以认为是全局状态组的任意一个更新?游戏的状态机gameLoop?(所谓的Rx没有全局状态纯属胡说八道)
  7. p75 We can turn a cold Observable into a hot one using publish.
  8. p77 使用fragment提纲DOM树更新性能
  9. p81 每个地点标注就是一个单独的Layer
  10. p87 这里使用的是String.replace,没有用到JS Template高级特性
  11. Schedulers
    1. Rx.Scheduler.default/currentThread/immediate/requestAnimationFrame
    2. observeOn and subscribeOn //灵活性?
    3. TestScheduler:createCold/HotObservable ?
  12. Cycle.js(实现了React的全部功能吗?)
    1. p108 每个使用JSX的js文件顶端:/** @jsx hJSX */ var hJSX = CycleDOM.hJSX; //?
    2. Model-View-Intent

Rx让我想起了Java 8 Stream,而Scheduler让我想起了微软的WF库 

你可能感兴趣的:(JavaScript,事件流,Observable,Rx,响应式编程)