为什么可观察到的行为在从休息端点返回时急于求成?

Why observable behavior eager when returning it from a rest endpoint?

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

Observable 是惰性的,但是当从 rest 端点返回一个 observable 时,例如,在 spring-boot 应用程序中,即使没有任何订阅,它也会表现得急切。

如何以及为什么?

这个问题可能看起来很愚蠢,但我不知道并想知道答案。

引擎盖下有一个订阅。框架(我猜你正在使用 WebFlux)在收到请求时调用 allPerson() 方法,订阅返回的 Observable 并将内容发送回调用者。这一切都是异步发生的,因此该框架能够同时处理多个请求。