Почему наблюдаемое поведение стремится при возврате из конечной точки покоя? - PullRequest
0 голосов
/ 11 января 2020
@GetMapping(value = "/list", produces = "application/json; charset=utf-8")
public Observable<List<Person>> allPerson(){
        return Observable
                .range(0, Integer.MAX_VALUE)
                .map(this::listAllPerson)
                .takeWhile(list -> !list.isEmpty());
    }

Наблюдаемые являются ленивыми, но при возврате наблюдаемой из конечной точки отдыха, например, в приложении с весенней загрузкой, оно ведет себя нетерпеливо даже без какой-либо подписки.

Как и почему?

Этот вопрос может показаться глупым, но я не знаю и удивляюсь.

1 Ответ

0 голосов
/ 11 января 2020

Под капотом есть подписка. Фреймворк (я полагаю, вы используете WebFlux) вызывает метод allPerson(), когда он получает запрос, подписывается на возвращаемый Observable и отправляет содержимое обратно вызывающей стороне. Все это происходит асинхронно, поэтому инфраструктура может обрабатывать несколько запросов одновременно.

...