Observer
Observer
观察者是由
const observer = {
next: x => console.log("Observer got a next value: " + x),
error: err => console.error("Observer got an error: " + err),
complete: () => console.log("Observer got a complete notification")
};
要使用观察者,需要把它提供给
observable.subscribe(observer);
下面的示例是没有 complete
回调函数的观察者:
const observer = {
next: x => console.log("Observer got a next value: " + x),
error: err => console.error("Observer got an error: " + err)
};
当订阅
observable.subscribe(x => console.log("Observer got a next value: " + x));
在 observable.subscribe
内部,它会创建一个观察者对象并使用第一个回调函数参数作为 next
的处理方法。三种类型的回调函数都可以直接作为参数来提供:
observable.subscribe(
x => console.log("Observer got a next value: " + x),
err => console.error("Observer got an error: " + err),
() => console.log("Observer got a complete notification")
);
Subscription
const observable = Rx.Observable.interval(1000);
const subscription = observable.subscribe(x => console.log(x));
// 稍后:
// 这会取消正在进行中的 Observable 执行
// Observable 执行是通过使用观察者调用 subscribe 方法启动的
subscription.unsubscribe();
const observable1 = Rx.Observable.interval(400);
const observable2 = Rx.Observable.interval(300);
const subscription = observable1.subscribe(x => console.log("first: " + x));
const childSubscription = observable2.subscribe(x =>
console.log("second: " + x)
);
subscription.add(childSubscription);
setTimeout(() => {
// subscription 和 childSubscription 都会取消订阅
subscription.unsubscribe();
}, 1000);