Java 如何通过iterable/list动态链接可观察对象?
我目前正在使用RxJava,我有这样的东西Java 如何通过iterable/list动态链接可观察对象?,java,rx-java,rx-java2,Java,Rx Java,Rx Java2,我目前正在使用RxJava,我有这样的东西 List<Integer> taskIds = ... Observable.just(new Task(taskIds.get(0))) .compose(executeWorkFlow()) .filter(Response::isSuccess) .flatMap(res -> Observable.just(new Task(taskIds.get(1))) .
List<Integer> taskIds = ...
Observable.just(new Task(taskIds.get(0)))
.compose(executeWorkFlow())
.filter(Response::isSuccess)
.flatMap(res -> Observable.just(new Task(taskIds.get(1)))
.compose(executeWorkFlow())
.filter(Response::isSuccess)
.flatMap(res -> Observable.just(new Task(taskIds.get(2)))
.compose(executeWorkFlow())
.filter(Response::isSuccess)
...
List taskIds=。。。
可观察的.just(新任务(taskIds.get(0)))
.compose(executeWorkFlow())
.filter(响应::isSuccess)
.flatMap(res->Observable.just(新任务(taskIds.get(1)))
.compose(executeWorkFlow())
.filter(响应::isSuccess)
.flatMap(res->Observable.just(新任务(taskIds.get(2)))
.compose(executeWorkFlow())
.filter(响应::isSuccess)
...
execute()是一个转换器,它执行API调用并返回响应,即
ObservableTransformer<Task, Response> execute() { ... }
observetTransformer execute(){…}
有没有更好的方法来写这篇文章?因为我不知道从以前的可观察对象中会发出多少个任务ID。使用
fromIterable
,concatMap
和takeUntil(谓词)
:
考虑使用<代码>可执行的<代码> >代码>连接图>代码>和代码>直到(谓词)。我已经考虑了<代码> CuttMult,但是它只允许映射一个可观察的序列而不用链接(如果在先前的任务中满足条件,我只需要执行以下任务)嘿,我有一个后续问题。如果我想检索用于创建下一个可观察对象的响应,我将如何做?(假设现在任务被创建为
新任务(任务,以前的响应)
)将以前的响应保存在字段或原子引用中,并在concatMap中读取它。
Observable.fromIterable(tasks)
.concatMap(task ->
Observable.just(new Task(task))
.compose(executeWorkFlow())
)
.takeUntil(response -> !response.isSuccess)