首页 > 解决方案 > 如何使用 rxJava 发出乘法请求

问题描述

如何通过改造提出 10 个并行请求。请帮我解决这个问题。我尝试使用 zip 运算符,但我只能在 Java 中使用 Function9。

public Single<List<Response<MyResponse>>> getRequest(...) {

        return Single.zip(getNyRequest(sessionId, RequestParams.getParams( "")),
                getNyRequest(sessionId, RequestParams.getParams( "")),
                getNyRequest(sessionId, RequestParams.getParams("")),
                getNyRequest(sessionId, RequestParams.getParams("")),
                getNyRequest(sessionId, RequestParams.getParams("")),
                getNyRequest(sessionId, RequestParams.getParams("")),
                getNyRequest(sessionId, RequestParams.getParams("")),
                getNyRequest(sessionId, RequestParams.getParams("")),
                getNyRequest(sessionId, RequestParams.getParams("")),
                getNyRequest(sessionId, RequestParams.getParams("")),
                (result1, result2, result3, result4, result5, result6, result7, result8, result9, result10) -> {

                });
}

标签: javaandroidrx-java

解决方案


您可以使用可迭代:

  List<Single<String>> singles = Arrays.asList(Single.just("1"), Single.just("2"), Single.just("3"));
  Single<List<String>> zip = Single.zip(singles, objects -> Stream.of(objects).map(o -> (String) o).collect(Collectors.toList()));

在你的情况下:

 List<Single<Response<MyResponse>>> singles = Arrays.asList(getNyRequest(sessionId, RequestParams
        .getParams("")), getNyRequest(sessionId, RequestParams.getParams("")), ....);
 Single<List<Response<MyResponse>>> zip = Single.zip(singles,
        objects -> Stream.of(objects).map(o -> (Response<MyResponse>) o).collect(Collectors.toList()));

编辑: 每 10 分钟重复一次:

getRequest(...).repeatWhen(c -> c.delay(10, TimeUnit.MINUTES))
.subscribe();

推荐阅读