codecamp

RxJS 订阅

什么是订阅?订阅是代表可抛弃资源的对象,通常是 Observable 的执行。订阅具有一种重要的方法, unsubscribe它不带任何参数,而只是处置该订阅所拥有的资源。在以前的 RxJS 版本中,订阅称为“一次性”。

import { interval } from 'rxjs';


const observable = interval(1000);
const subscription = observable.subscribe(x => console.log(x));
// Later:
// This cancels the ongoing Observable execution which
// was started by calling subscribe with an Observer.
subscription.unsubscribe();

订阅实际上仅具有 unsubscribe()释放资源或取消可观察执行的功能。

订阅也可以放在一起,以便 unsubscribe()对一个订阅中的一个的调用可以取消订阅多个订阅。您可以通过将一个订阅“添加”到另一个订阅中来做到这一点:

import { interval } from 'rxjs';


const observable1 = interval(400);
const observable2 = interval(300);


const subscription = observable1.subscribe(x => console.log('first: ' + x));
const childSubscription = observable2.subscribe(x => console.log('second: ' + x));


subscription.add(childSubscription);


setTimeout(() => {
  // Unsubscribes BOTH subscription and childSubscription
  subscription.unsubscribe();
}, 1000);

执行后,我们会在控制台中看到:

second: 0
first: 0
second: 1
first: 1
second: 2

订阅还具有一种 remove(otherSubscription)方法,以便撤消添加子订阅。

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; }