// 需要处理的数据 const data = [1, 2, 3,...] // 异步处理函数 const asyncFn = d => Promise.resolve(d) from(data).pipe(mergeMap(asyncFn, 10)) // mergeMap 的第二个参数 concurrent 用来指定同时定于的最大输入 通过指定 concurrent 为 10 让 mergeMap 同一时间只会订阅上游的 10 个流,只有当其中的一个流结束时,才会订阅第 11 个流,这样就能达到同时并发的个数了.这里要注意有一个风险,如果这 10 个流都是无限流的话,那么永远不会订阅第 11 个流.
通过指定 concurrent 为 10 让 mergeMap 同一时间只会订阅上游的 10 个流,只有当其中的一个流结束时,才会订阅第 11 个流,这样就能达到同时并发的个数了.
这里要注意有一个风险,如果这 10 个流都是无限流的话,那么永远不会订阅第 11 个流.