繁体   English   中英

如何使用rxJava提出乘法请求

[英]How to make multiply request with 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) -> {

                });
}

您可以使用iterable:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM