如何解决RxJS 和 redux-observable等到满足某个条件
我对 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 举报,一经查实,本站将立刻删除。