如何在第一个observable的所有值被释放后返回observable?

时间:2015-08-15 13:23:20

标签: rx-java

我有一个方法可以从字符串列表中创建一个observable。

public Observable makeUrls() {
    List<String> urls = new ArrayList<>();
    return Observable.from(urls)
            .flatMap(url -> upload(url));
}

现在我希望在发出列表中的所有值后返回方法b。

public Observable b(List<String> strings){
    return Observable.from(strings)
                     ..some other work here...;
}

我需要的预期代码是这样的:

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));
}

1 个答案:

答案 0 :(得分:4)

使用.ignoreElementsconcatWith

假设b(strings)返回Observable<Thing>

return Observable.from(urls)
        .flatMap(url -> upload(url))
        .ignoreElements()
        .castAs(Thing.class)
        .concatWith(b(strings));