RxJS的 combineLatest 和 forkJoin

RxJS 是使用 Observables 的响应式编程的库,它使编写异步或基于回调的代码更容易。

combineLatest

说明:combineLatest接收多个Observable作为参数,只要其中任意一个Observable发射出值,combineLatest就会发射由每个Observable发出的最新值组成的数组。

使用场景:比如,订阅两个列表的数据,将两个列表的数据组装后展示。当任意一个列表的数据发生时,拿到两个列表的最新数据重新组装并展示。

import { Subject, combineLatest } from 'rxjs';
private ngUnsubscribe$ = new Subject();

combineLatest([observable1$, observable2$])
    .pipe(skip(1), takeUntil(this.ngUnsubscribe$)) // 注意在组件销毁后取消订阅
    .subscribe(data => {
        const observable1Data = data[0];
        const observable2Data = data[1];
    });

ngOnDestroy() {
    this.ngUnsubscribe$.next();
    this.ngUnsubscribe$.complete();
}

forkJoin

说明:forkJoin接收多个Observable作为参数,并等每个Observable都发射出值后,forkJoin发射出由每个observable发射的值组成数组。

使用场景:当需要等多个接口的数据都返回之后才能进行下一步操作时。

import { forkJoin } from 'rxjs';

forkJoin([
    this.http.get(`${api1}`),
    this.http.get(`${api2}`),
    this.http.get(`${api3}`),
]).subscribe(data => {
	// 三个接口返回的数据
    const [data0, data1, data2] = data;
});
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值