为什么可观察到的行为在从休息端点返回时急于求成?
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 并将内容发送回调用者。这一切都是异步发生的,因此该框架能够同时处理多个请求。
@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 并将内容发送回调用者。这一切都是异步发生的,因此该框架能够同时处理多个请求。