阅读(4901) (1)

RxJS 观察者模式

2020-09-24 14:12:28 更新

什么是观察员?观察者是观察者传递的价值的消费者。观察者只是一组回调,一个用于由所述可观测的递送通知每种类型:nexterror,和 complete。以下是典型的 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'),
};

要使用 Observer,请将其提供给 subscribeObservable 的:

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 可能传递的每种通知类型。

在 RxJS 观察员也可以是局部的。如果您不提供任何一种回调,则 Observable 的执行将仍然正常进行,除了某些类型的通知将被忽略,因为它们在 Observer 中没有相应的回调。

下面的示例是一个没有 complete回调的观察者:

const observer = {
  next: x => console.log('Observer got a next value: ' + x),
  error: err => console.error('Observer got an error: ' + err),
};

订阅 Observable 时,您也可以只提供回调作为参数,而不必附加到 Observer 对象,例如:

observable.subscribe(x => console.log('Observer got a next value: ' + x));

在内部 observable.subscribe,它将使用第一个回调参数作为 next处理程序创建一个 Observer 对象。所有三种回调类型都可以作为参数提供:

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')
);