当前位置: 首页 > 知识库问答 >
问题:

Rx Android将对同一服务的多次调用并行组合

颜实
2023-03-14

我必须改进一个旧的服务,它对同一个服务进行多个连续调用,并将所有结果合并到一个列表中。

假设我们有一个ID列表=[1,2,3,…6],所以我必须用每个ID调用相同的API(带有改装和可观察)。

为此,我想使用Rx Android,但我对如何合并结果有疑问。

        Integer[] ids = {1, 2, 3};

        Observable.from(ids)
                .map(id -> mApi.getData(id))

我们可以进行并行调用并按照相同的顺序合并结果吗?

为了提高时间响应,我们的想法是并行执行,但我不知道如何确保结果将按照与服务器调用相同的顺序进行组合。

我想使用concat(http://reactivex.io/documentation/operators/concat.html),但它等待前一个可观察到的等待。

共有1个答案

乜栋
2023-03-14

请参见ConcatmaPagear及其变体。

Observable.fromArray(1, 2, 3)
.concatMapEager(id -> 
    Observable.fromCallable(() -> mApi.getData(id))
    .subscribeOn(Schedulers.io())
)
.subscribe(...);
 类似资料:
  • 当尝试将Mockito与spring一起使用时,通过bean声明创建Mock对象... ...我在调用mockito时发现了一些奇怪的行为。当多次没有重置Mock对象时,例如: 在测试过程中(在同一个模拟上)多次调用此代码(“mockito.when”)时,测试就会失败并出现错误(BadSqlGrammerException即使该异常实际上是预期的--如果不抛出异常,我会得到一个失败,并且手动抛出

  • 问题内容: 当尝试通过Spring使用Mockito时,通过bean声明创建Mock对象… …我多次调用Mockito。时发现一些奇怪的行为,而没有重置Mock对象,例如: 一旦在测试期间(在同一模拟上)多次调用此代码(“ Mockito.when”),测试就会失败并显示错误(BadSqlGrammerException,即使实际上是预期的异常,我也会失败- 如果我不抛出异常,则手动抛出该异常就可

  • 我正在使用的应用程序将按以下顺序使用2个REST web服务: 1) 计数记录-了解特定时间范围内的记录数。 2)获取记录——一旦我们有了记录的数量,我们就需要调用这项服务。但是这项服务有一个门槛来一次性获取10K记录。假设第一个服务在特定的时间间隔内告诉我,它有100K的记录,那么我需要以分页方式调用第二个网络服务10次,考虑到它的阈值是一次10K的。 因此,如果我将进行10次同步调用,我的应用

  • 我将以下响应返回给用户 到目前为止,我正在进行三次连续调用来计算这个,每个调用都可以独立于其他调用运行。我尝试制作三种不同的作为: 如果我做了

  • 问题内容: var arrObj = [{a:1, b:2},{c:3, d:4},{e:5, f:6}]; 如何将其合并为一个obj? 问题答案: 如果您的环境支持,那么您可以像这样简洁地进行操作 ES5解决方案: 您可以使用这样的 此解决方案仅将的所有键及其值收集在中的每个对象中,最终将结果返回给我们。 这张支票 有必要确保我们在结果中不包括所有继承的可枚举属性。

  • 在服务调用组合中,我测试了已记录的示例,它按预期工作 我更改了实现以验证请求头中的访问令牌,我发现在项目的多个模块中使用相同的实现而不是复制/粘贴非常有用。为此,我: 在我的项目中创建了一个名为公共工具的模块 创建了一个名为AuthorizationService的服务及其实现 创建了一个通信模块类并重写了方法 尝试覆盖描述符描述符()方法,但我无法使其编译,它总是编译失败这就是方法: 控制台输出