建立Observable

建立Observable : create

建立 Observable 的方法有非常多种,其中 create 是最基本的方法。

var observable = Rx.Observable.create(
    function(observer){
      observer.next('hello');
      observer.next('world');
    }
);

//订阅
observable.subscribe(
  function(value){
    console.log(value);
  }
);

订阅 Observable 跟 addEventListener 在实作上其实有非常大的不同。虽然在行为上很像,但实际上 Observable 根本没有管理一个订阅的清单,这个部份的细节我们留到最后说明!

这裡有一个重点,很多人认为 RxJS 是在做非同步处理,所以所有行为都是非同步的。但其实这个观念是错的,RxJS 确实主要在处理非同步行为没错,但也同时能处理同步行为,像是上面的程式码就是同步执行的。

Observable 同时可以处理同步与非同步的行为!

观察者Observer

Observable 可以被订阅(subscribe),或说可以被观察,而订阅 Observable 的物件又称为 观察者(Observer)。观察者是一个具有三个方法(method)的物件,每当 Observable 发生事件时,便会呼叫观察者相对应的方法。

注意这裡的观察者(Observer)跟上一篇讲的观察者模式(Observer Pattern)无关,观察者模式是一种设计模式,是思考问题的解决过程,而这裡讲的观察者是一个被定义的物件。

观察者的三个方法(method):

  • next:每当 Observable 发送出新的值,next 方法就会被呼叫。

  • complete:在 Observable 没有其他的资料可以取得时,complete 方法就会被呼叫,在 complete被呼叫之后,next 方法就不会再起作用。

  • error:每当 Observable 内发生错误时,error 方法就会被呼叫。

总结

Observable 可以同时处理同步跟非同步行为
Observer 是一个物件,这个物件具有三个方法,分别是 next, error, complete
订阅一个 Observable 就像在执行一个 function

上一篇:数据倾斜的原因是什么,如何解决


下一篇:苹果macAE 3D粒子系统插件:Trapcode Particular