Observer
what is Observer? Observer(观察者)是Observable(可观察对象)推送的数据的消费者。在Rxjs中,Observer是由回调组成的对象,对象的键名分别为:next
、error
和complete
,以此接受Observable推送的不同类型的通知,下面的代码是Observer的一个简单示例:
var 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'),
};
Observer 的使用,只需要在 subscribe
Observable时,把 observer 作为参数传递给 subscribe
方法即可。
observable.subscribe(observer);
Observers are just objects with three callbacks, one for each type of notification that an Observable may deliver.
在Rxjs中,Observer中的 next
,error
,complete
三个处理逻辑是可以部分缺失的,即使缺失了部分,Observable 仍能正常运行的,只不过是对应的处理逻辑会被忽略,因为没有定义相应的处理逻辑,Observable 也就无法处理的。
下面例子中的 Observer 就缺少了 complete
的处理逻辑:
var observer = {
next: x => console.log('Observer got a next value: ' + x),
error: err => console.error('Observer got an error: ' + err),
};
在 subscribe
Observable 的时候,可以直接把函数作为参数传递给 subscribe
方法,而不用传入整个 Observer 对象,当只传入一个函数的时候,Rxjs 在内部会创建一个只含有 next
处理逻辑的 Observer。
observable.subscribe(x => console.log('Observer got a next value: ' + x));
当然你也可以把next
,error
,complete
的回调函数作为参数全部传入subscribe
方法:
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')
);
上面的例子,在 Observable 的内部,依然可以正常的调用 observer.next
, observer.error
,observer.complete
三个方法。