首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >RxJava:动态创建可观察值,并将最终结果作为可观察值发送

RxJava:动态创建可观察值,并将最终结果作为可观察值发送
EN

Stack Overflow用户
提问于 2016-08-29 15:04:46
回答 1查看 914关注 0票数 3

我正在使用RxJava,其中我想要基于某些条件动态创建许多可观察对象。完成创建后,我想对由可观察对象返回的不同值进行一些处理,然后作为一个可订阅的可观察对象发送。下面是我的代码:

代码语言:javascript
复制
List<String> valueList = .... 

List<Observable<String>> listOfObservables = new ArrayList<Observable<String>>();

for(int i =; i <valueList.size(); i++){
        listOfObservables.add(new SomeClass.doOperation(valueList(i)));
        // SomeClass.doOperation will return an Observable<String>
    }

return Observable.merge(listOfObservables);

但在这里,我想对listOfObservable中不同可观察对象发出的值进行一些操作,并最终将其作为单个Observable<String>返回

就像在Observable.zip()中一样,我可以这样做

代码语言:javascript
复制
return Observable.zip(observable1, observable2, (string1, string2) -> {
            // joining final string here
            return string1 + string2;

但我知道这里的参数数量。请告诉我如何才能做到这一点。

EN

Stack Overflow用户

回答已采纳

发布于 2016-08-29 15:45:11

使用zip重载that takes a variable number of arguments,它的签名为

代码语言:javascript
复制
<R> Observable<R> zip(Iterable<? extends Observable<?>> ws,
                      FuncN<? extends R> zipFunction)

示例用法:

代码语言:javascript
复制
List<String> valueList = .... 

return Observable.from(valueList)
    .map(string -> SomeClass.doOperationThatReturnsObservable(string))
    .toList()
    .flatMap(listOfObs -> Observable.zip(listOfObs, (Object[] results) -> {
       // do something with the strings in the array.
       return Arrays.stream(results)
                    .map(Object::toString)
                    .collect(Collectors.joining(","));
    }));
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39200322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档