codecamp

RxJS 观察者模式

什么是观察员?观察者是观察者传递的价值的消费者。观察者只是一组回调,一个用于由所述可观测的递送通知每种类型: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')
);
RxJS 可观察对象
RxJS 运算符
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

RxJS operators

RxJS fetch

RxJS testing

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }