Я пытаюсь понять концепции, лежащие в основе реактивного программирования, и в настоящее время я делаю приложение JavaFX, которое загружает 3 случайных пользователей GitHub после запроса http.Я создал Observable, который переносит вызов к API github (API возвращает список из 30 элементов), и из ответа я хочу извлечь первые 3 элемента, чтобы разместить их на странице.
Observable<List<GitHubUser>> loadButtonObservable = JavaFxObservable
.actionEventsOf(runButton)
.flatMap(ae ->
Observable.fromCallable(() ->
githubExternalService.getUsersSince(
new Random().nextInt(500))));
loadButtonObservable
.take(1)
.map(list -> list.get(0))
.subscribe(i -> userOneVBox.getChildren().add(createText(i)));
loadButtonObservable
.skip(1)
.take(1)
.map(list -> list.get(0))
.subscribe(i -> userTwoVBox.getChildren().add(createText(i)));
loadButtonObservable
.skip(2)
.take(1)
.map(list -> list.get(0))
.subscribe(i -> userThreeVBox.getChildren().add(createText(i)));
Iожидалось, что при нажатии кнопки запрос будет выполнен, и подписчики получат список из 30 элементов, но вместо этого вся цепочка наблюдаемых будет запущена от каждого подписчика.Не могли бы вы помочь мне понять, как структурировать код, чтобы он выполнял 1 запрос вместо 3?