Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何通过iterable/list动态链接可观察对象?_Java_Rx Java_Rx Java2 - Fatal编程技术网

Java 如何通过iterable/list动态链接可观察对象?

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))) .

我目前正在使用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)))
        .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)