5月30日 21:21

RxJS 在 Angular 项目中通常怎么用?

在 Angular 里,RxJS 主要用来处理会随时间变化的数据:HTTP 请求、路由参数、响应式表单、组件事件和应用状态。HttpClient 返回 Observable,路由的 paramMap、表单的 valueChanges 也是 Observable,所以 Angular 项目不是额外引入 RxJS,而是日常开发天然会碰到它。

追问

HTTP 为什么返回 Observable 而不是 Promise?

Observable 可以取消、组合,也能和表单、路由这些流保持同一套写法。单次 HTTP 看起来和 Promise 差不多,但需要重试、超时、取消旧请求时更顺手。

AsyncPipe 解决了什么问题?

它自动订阅 Observable,并在组件销毁时退订,减少内存泄漏。复杂副作用仍应放在组件或服务中组织。

表单搜索一般怎么写?

监听 valueChanges,先过滤空值,再防抖、去重,最后用 switchMap 请求接口。关键是旧请求要能被取消。

BehaviorSubject 适合做全局状态吗?

小型状态可以,比如当前用户、筛选条件、侧边栏开关。状态变多或需要调试时,NgRx、Signal Store 更稳。

写段代码

ts
results$ = this.form.controls.keyword.valueChanges.pipe( filter(v => !!v && v.length >= 2), debounceTime(300), distinctUntilChanged(), switchMap(q => this.api.search(q)) );
标签:RxjsAngular