rxjs 处理异步操作

问题描述

我现在要异步处理100条数据,只能异步同时处理10条,这个用rxjs怎么处理呢?求指教,谢谢大佬

阅读 3k
2 个回答
// 需要处理的数据
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 个流.

同一时间好像浏览器有最大异步请求数量。这个是浏览器限制的,rxjs也没法跨过去。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题