建立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