什么是 Observable?
Observable 是一种用于处理异步数据流的数据类型。它可以发出多个值,这些值可以是同步或者异步产生的,并且可以在时间上发生变化。在 Angular 中,HttpClient 返回的响应对象、事件流以及许多其他异步任务都可以表示为 Observable。
Observable 的特性:
-
异步数据流:Observable 可以发出零个或多个值,这些值可以是同步或异步生成的,非常适合处理 HTTP 请求和响应这类异步操作。
-
操作符:Observable 提供了丰富的操作符,例如 map、filter、mergeMap 等,可以对数据流进行变换、过滤和组合,从而实现复杂的数据处理逻辑。
-
订阅:Observable 需要通过订阅(subscribe)来激活并监听数据流。订阅时,我们通常会定义一个观察者对象,它包含了处理 Observable 发出的数据的方法。
-
取消订阅:Observable 的订阅返回一个 Subscription 对象,我们可以使用它来取消订阅,避免内存泄漏或者不必要的资源消耗。
在拦截器中使用 Observable
在 Angular 中的 HTTP 拦截器中,我们经常会使用 Observable 来处理 HTTP 请求和响应。next.handle(request)
返回的 Observable 对象表示了一个异步的 HTTP 请求处理流程。我们可以通过以下方式来使用它: