Rx java 在第一个可观测值的所有值都被满足后,如何返回可观测值?

Rx java 在第一个可观测值的所有值都被满足后,如何返回可观测值?,rx-java,Rx Java,我有一个方法,可以从字符串列表中创建一个可观察的 public Observable makeUrls() { List<String> urls = new ArrayList<>(); return Observable.from(urls) .flatMap(url -> upload(url)); } public Observable makeURL(){ 列表URL=新的ArrayList(); 返回可观察的。从

我有一个方法,可以从字符串列表中创建一个可观察的

public Observable makeUrls() {
    List<String> urls = new ArrayList<>();
    return Observable.from(urls)
            .flatMap(url -> upload(url));
}
public Observable makeURL(){
列表URL=新的ArrayList();
返回可观察的。从(URL)
.flatMap(url->上传(url));
}
现在我想在发出列表中的所有值之后返回方法b

public Observable b(List<String> strings){
    return Observable.from(strings)
                     ..some other work here...;
}
公共可观察b(列表字符串){
返回可观察的。从(字符串)
…这里还有其他工作。。。;
}
我需要的预期代码如下所示:

public Observable makeUrls() {
    List<String> urls = new ArrayList<>();
    return Observable.from(urls)
            .flatMap(url -> upload(url))
            // This part is what i can't figure out how to write...
            // I want to call this after all items are emitted but I can't return Observable
            .doOnCompleted(()->b(strings));
}
public Observable makeURL(){
列表URL=新的ArrayList();
返回可观察的。从(URL)
.flatMap(url->上载(url))
//这部分是我不知道怎么写的。。。
//我想在所有项目发出后调用它,但我不能返回Observable
.doOnCompleted(()->b(字符串));
}

使用
.ignoreElements
concatWith

假设
b(字符串)
返回
可观察的


使用
.ignoreElements
concatWith

假设
b(字符串)
返回
可观察的


问题不在清单上!问题是doOnCompleted()无法返回可观察的,因此我可以继续流…如果我尝试使用Flatmap而不是doOnCompleted,会发生什么?它的反应是一样的吗?好的,所以b不把流作为一个参数,而是独立的,返回它自己的可观察的,只是你希望它在上传完成后运行?我会更新答案的。好的,我已经用我的猜测更新了。你能改进这个问题,让我们知道b的签名是什么,字符串是从哪里来的吗?好的。是的,如果你需要处理所有的排放物,toList是有效的,但问题并不清楚。我应该把答案保持原样,还是把问题和答案清理干净?问题不在清单上!问题是doOnCompleted()无法返回可观察的,因此我可以继续流…如果我尝试使用Flatmap而不是doOnCompleted,会发生什么?它的反应是一样的吗?好的,所以b不把流作为一个参数,而是独立的,返回它自己的可观察的,只是你希望它在上传完成后运行?我会更新答案的。好的,我已经用我的猜测更新了。你能改进这个问题,让我们知道b的签名是什么,字符串是从哪里来的吗?好的。是的,如果你需要处理所有的排放物,toList是有效的,但问题并不清楚。我应该让答案保持原样,还是清理问题和答案?什么是“字符串”?如果这是您的原始url或上传返回值的集合(字符串url)?这个问题仍然没有答案吗?根据您的评论,似乎应该接受Dave的答案,除非有其他内容。是的,问题已经解决,但Dave Moten说他将编辑他的答案,但他尚未编辑。什么是“字符串”?如果这是您的原始url或上传返回值的集合(字符串url)?这个问题仍然没有答案吗?根据您的评论,似乎应该接受Dave的答案,除非有其他内容。是的,问题已得到回答,但Dave Moten说他将编辑他的答案,但他尚未编辑。
return Observable.from(urls)
        .flatMap(url -> upload(url))
        .ignoreElements()
        .castAs(Thing.class)
        .concatWith(b(strings));