📜  RxJS-使用订阅(1)

📅  最后修改于: 2023-12-03 15:34:47.078000             🧑  作者: Mango

RxJS-使用订阅

RxJS 是 JavaScript 的一个库,它通过使用可观察的序列来编写异步和基于事件的程序,同时提供对处理异步代码的丰富的查询操作。

在 RxJS 中,观察者会订阅一个可观察的序列,当可观察序列发出下一个值时,观察者就会接收到这个值。这也是 RxJS 最重要的设计理念之一,它被称为订阅。本文将深入介绍 RxJS 中的订阅。

创建可观察对象

在 RxJS 中,我们可以使用 Observable 工厂函数创建可观察对象,示例如下:

import { Observable } from 'rxjs';

const observable = new Observable(subscriber => {
  subscriber.next(1);
  subscriber.next(2);
  subscriber.next(3);
  subscriber.complete();
})

以上代码创建了一个可观察对象,它会依次发出值 123,然后完成发出。

订阅可观察对象

接下来,我们需要订阅该可观察对象以接收它的值。我们通过调用 subscribe() 方法来实现订阅,该方法接受一个 Observer 对象作为参数,Observer 对象包含了处理发射值的方法。以下是一个示例:

observable.subscribe({
  next: value => console.log(value),
  complete: () => console.log('complete!')
})

以上代码输出以下内容:

1
2
3
complete!
解除订阅

在 RxJS 中,如果我们不再需要接收一个可观察对象的值,应该取消订阅它。有两种方法可以取消订阅:

  • 使用订阅对象的 unsubscribe() 方法
  • 将订阅对象分配给变量,并调用变量的 unsubscribe() 方法

示例代码:

const subscription = observable.subscribe({
  next: value => console.log(value),
  complete: () => console.log('complete!')
})

subscription.unsubscribe();
// 或者
// observable.subscribe().unsubscribe()

以上代码输出以下内容:

1
2
3

在此之后,我们取消了对可观察对象的订阅,因此不会再次看到 complete!

小结

在本文中,我们讨论了 RxJS 中的订阅,以及如何创建可观察对象、订阅它们并解除订阅它们。RxJS 中的订阅是编写异步代码的核心,并且理解订阅是使用 RxJS 的基本前提。