Subscription

425 阅读1分钟

Subscription

什么是订阅? Subscription 是一个对象,它代表一个一次性资源,通常是一个 Observable 的执行。订阅有一个重要的方法,取消订阅,它不接受任何参数,只处理订阅持有的资源。在之前的 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();

Subscription 本质上只有一个 unsubscribe() 函数来释放资源或取消 Observable 执行。

订阅也可以放在一起,这样对一个订阅的 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) 方法,以撤消子订阅的添加。