首页 > 解决方案 > 是否有一个 rxjs 运算符来获取可观察的列表并一次订阅 N 直到全部完成?

问题描述

我的应用程序需要对数据 API 进行多次单独调用,但出于性能原因,我不想一次全部转储它们。是否有一个 rxjs 运算符可以让我一次只运行几个,然后将它们的所有结果合并为一个?

因此,如果我需要从 ABC...XYZ 获取结果,并且我只想激活 2 个请求,它会订阅 A 和 B。然后如果 B 完成,它将订阅 C。然后 A 完成并订阅 D。依此类推,直到全部完成,但只有 2 个订阅处于活动状态。

标签: rxjs

解决方案


merge()的,可以选择这样做。最后一个参数merge必须是(并发请求的)数量。

文档摘录:

const timer1 = interval(1000).pipe(take(10));
const timer2 = interval(2000).pipe(take(6));
const timer3 = interval(500).pipe(take(10));
const concurrent = 2; // the argument
const merged = merge(timer1, timer2, timer3, concurrent);
merged.subscribe(x => console.log(x));

推荐阅读