RXJS

RxJSReactiveX編程理念的JavaScript版本

核心概念:

  • Observable
  • Observer
  • Operator

 

Observer是什麼

先看代碼:

let foo = Rx.Observable.create(observer => {
  console.log('Hello');
  observer.next(42);
});

let observer = x => console.log(x);
foo.subscribe(observer);

代碼中的第二個變量就是observer. 沒錯, observer就是當Observable"返回"值的時候接受那個值的函數!第一行中的observer其實就是通過foo.subscribe傳入的callback. 只不過稍加封裝了。 怎麼封裝的? 看代碼:

let foo = Rx.Observable.create(observer => {
  try {
    console.log('Hello');
    observer.next(42);
    observer.complete();
    observer.next(10);
  } catch(e) { observer.error(e) }
  
});

let observer = {
  next(value) { console.log(value) },
  complete() { console.log('completed'),
  error(err) { console.error(err) }
}
foo.subscribe(observer);

你看到observer被定義成了一個對象, 其實這纔是完整的observer. 傳入一個callback到observable.subcribe相當於傳入了{ next: callback }

 

參考資料:https://zhuanlan.zhihu.com/p/25383159 ---來自民工叔叔

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章