观察者是 Observable 传递的值的消费者。它是一组回调,用于 Observable 传递的每种类型的通知:next、error、complete。
const observer = {
next: (x) => console.log('Observer got a value: ' + x),
error: (err) => console.error('Observer got an error: ' + err),
complete: () => console.log('Observer got a complete notification'),
};
要使用 Observer, 请将其提供给 Observable 的 subscribe:
observable.subscribe(observer);
观察者只是具有三个回调的对象,一个用于 Observable 可能传递的每种类型的通知。
RxJS 中的观察者也可能是部分的。如果你不提供其中一个回调,Observable 的执行仍然会正常进行,除了某些类型的通知将被忽略,因为它们在观察者中没有对应的回调。
下面是没有提供 complete 回调的观察者:
const observer = {
next: (x) => console.log('Observer got a value: ' + x),
error: (err) => console.error('Observer got an error: ' + err),
}
订阅 Observable 时,也可以只提供下一个回调作为参数,而不附加到 observer 对象,例如:
observable.subscribe(x => console.log('Observer got a value: ' + x));
在 observable.subscribe
内部,它将使用回调参数创建一个 Observer 对象作为 next 处理程序。