Reactor Flux mergeWith 使用之前的值

Reactor Flux mergeWith using previous values

有没有办法通过合并多个Mono来创建Flux,合并后的Mono读取的是之前响应的值

类似的东西:

Flux<Integer> values = Mono.just(1).mergeWith( value -> Mono.just(value * 2));

您有 flatMapIterable/flatMapMany 可以提供帮助,例如:

.flatMapIterable(v -> List.of(v, v*2))

为了后代和说明 sp00m 的答案,下面是一个示例,说明我如何结合递归使用此技术来调用 Youtube API 并导航抛出所有响应页面。

下一页id在getNextPagetoken()中的当前页给出

    public Flux<VideoListResponse> getvideoListResponses() {
        Videos.List request = ...
        return videoListResponseFluxPaginated(request, null, true);
    }

    private Flux<VideoListResponse> videoListResponseFluxPaginated(Videos.List request, String pageToken, boolean firstCall) {
        if(pageToken == null && !firstCall) return Flux.empty();
        request.setPageToken(pageToken);
        return Mono.fromCallable(request::execute)
            .flatMapMany(videoListResponse -> Flux.merge(Flux.just(videoListResponse), videoListResponseFluxPaginated(request, videoListResponse.getNextPageToken(),false)))
            ;
    }