首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用java rx.Observable进行并行API调用

使用java rx.Observable进行并行API调用
EN

Stack Overflow用户
提问于 2018-06-22 22:45:40
回答 1查看 2.5K关注 0票数 4

我有一个Set<Object>,对于Set中的每个条目,我必须进行一个API调用,并将其作为参数传递。我必须处理这些响应中的每一个,并使用自己的逻辑填充另一个Map

顺序执行示例:

代码语言:javascript
运行
复制
List<MyResponse> responses = newArrayList<>();
Set<StoreNode> nodes = // Assume we have a Set
nodes.forEach(storeNode -> responses.add(myAPI.myMethod(storeNode.getId()));
responses.forEach(response -> processResponse(response, myMap); // This is a common map & I have some custom logic to populate this map

如何使用可观察性实现相同的目标?我想并行执行这些调用并填充我的公共地图myMap

我遇到了map(),flatMap() & zip(),但我看到的大多数示例都很简单,它们不会进行API调用并处理它们的响应。

EN

回答 1

Stack Overflow用户

发布于 2018-06-23 20:06:54

这取决于您使用的RxJava版本。如果它早于2.0.5,那么你需要做flatMap,在那里你创建另一个Observable,并确保它是并行的。请参阅StackOverflow上的this answer

否则,我建议使用Flowable,然后您可以使用parallel()运算符将您的Flowable更改为ParallelFlowable

所以你可以这样做:

代码语言:javascript
运行
复制
Flowable.fromIterable(nodes)
        .parallel() // you can also specify number of rails here
        .runOn(Schedulers.computation())
        .map(node -> myAPI.myMethod(node.getId()))
        .sequential()
        .subscribe(
                response -> processResponse(response, myMap),
                error -> log(error)
        );

有关更多信息,请参阅Parallel flows文档。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50990476

复制
相关文章

相似问题

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