9.7. rxjs

246 阅读1分钟

1.RxJS介绍

ReactiveX 结合了 观察者模式迭代器模式 和 使用集合的函数式编程

  • Observable (可观察对象):  表示一个概念,这个概念是一个可调用的未来值或事件的集合。
  • Observer (观察者):  一个回调函数的集合,它知道如何去监听由 Observable 提供的值。
  • Subscription (订阅):  表示 Observable 的执行,主要用于取消 Observable 的执行。
  • Operators (操作符):  采用函数式编程风格的纯函数 (pure function),使用像 mapfilterconcatflatMap 等这样的操作符来处理集合。
  • Subject (主体):  相当于 EventEmitter,并且是将值或事件多路推送给多个 Observer 的唯一方式。
  • Schedulers (调度器):  用来控制并发并且是中央集权的调度员,允许我们在发生计算时进行协调,例如 setTimeout 或 requestAnimationFrame 或其他

2.RxJS 基本 demo

用法和promise比较像,但是有区别

var foo = Rx.Observable.create(function (observer) { 
    observer.next(42); 
    observer.next(100); 
    setTimeout(() => { 
         observer.next(300); // 异步执行 
    }, 1000); 
}); 
var observer = { 
   next: (v) => observer.next(10 * v), 
   error: err => console.error('Observer got an error: ' + err), 
   complete: () => console.log('Observer got a complete notification'), 
};

observable.subscribe(observer);

2.# redux,mobx,rxjs,vue发布订阅者

对比几个框架,我们能体会到前端中数据流的管理,数据的变化驱动视图