RxJS 订阅

2020-09-24 14:34 更新

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

  1. import { interval } from 'rxjs';
  2. const observable = interval(1000);
  3. const subscription = observable.subscribe(x => console.log(x));
  4. // Later:
  5. // This cancels the ongoing Observable execution which
  6. // was started by calling subscribe with an Observer.
  7. subscription.unsubscribe();

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

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

  1. import { interval } from 'rxjs';
  2. const observable1 = interval(400);
  3. const observable2 = interval(300);
  4. const subscription = observable1.subscribe(x => console.log('first: ' + x));
  5. const childSubscription = observable2.subscribe(x => console.log('second: ' + x));
  6. subscription.add(childSubscription);
  7. setTimeout(() => {
  8. // Unsubscribes BOTH subscription and childSubscription
  9. subscription.unsubscribe();
  10. }, 1000);

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

  1. second: 0
  2. first: 0
  3. second: 1
  4. first: 1
  5. second: 2

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

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号