问题描述
我对 RxJS 和 redux-observable 有问题。我是 RxJS 的新手。一般来说,我有一部史诗,听我说一些动作。我想对这些操作进行分组,以便在满足某些条件时一个接一个地执行它们。我尝试了很长时间,但找不到解决方案。
这是我的情况:
- 我上传文件就像在 Google 云端硬盘中一样。
- 用户选择10个文件上传,但同时只能上传3个文件,在队列中等待。
- 上传会立即开始上传第一个、第二个和第三个文件。
- 上传其中一个后,开始从列表中上传下一个(列表中的4个文件,需要顺序)
为了或多或少地展示它的外观,我创建了这样一个伪代码,waitUntilConditionIsMet
方法不存在,但它会显示一个方法,它会无限期地等待直到条件为真
const MAX_ParaLLEL_UPLOAD_QUERIES = 3
let currentlyUploadingCounter = 0
export const exampleEpic = (action$) => action$.pipe(
ofType(
EXAMPLE_ACTION,),waitUntilConditionIsMet(() => (
currentlyUploadingCounter < MAX_ParaLLEL_UPLOAD_QUERIES
),1000),mergeMap(async (action) => {
currentlyUploadingCounter += 1;
await someAsyncAction()
currentlyUploadingCounter -= 1;
return {
type: EXAMPLE_ACTION_SUCCESS,}
}
)
目前它在递归的基础上对我有用(如果条件为假,在 mergeMap 中执行相同的延迟操作),但这效果不好(文件是随机加载的)。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)