Как сделать умноженный запрос с помощью rxJava - PullRequest
0 голосов
/ 10 июля 2019

Как сделать 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) -> {

                });
}

1 Ответ

1 голос
/ 10 июля 2019

Вы можете использовать итерируемый:

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