我想从第三方资源中检索所有网页。为此,我写了这个:
final WebClient webClient = WebClient.builder()
.baseUrl("http://resource.com")
.build();
Flux.fromStream(IntStream.iterate(0, i -> i + 1).boxed())
.flatMap(i -> webClient.get()
.uri("/data?page={page}", i)
.retrieve()
.bodyToMono(Page.class))
.takeWhile(Page::isMoreAvailable)
.flatMapIterable(Page::getData)
但它没有正常工作。多次调用flatMap
,在takeWhile
检索第一个响应之前,它会使用不同的页面执行多个请求。
如果我将其更改为:
.map(i -> webClient.get()
.uri("/data?page={page}", i)
.retrieve()
.bodyToMono(Page.class)
.block())
效果很好。
那么,我怎样才能用flatMap
来实现这个目标?
答案 0 :(得分:0)
好的,所以flatmap处理并发
var keys = Object.keys($scope.details);
for(var i = 0; i < keys.length; i++){
console.log(keys[i]);
}
做了这个伎俩。