首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无初始延迟的磁链delayElements

无初始延迟的磁链delayElements
EN

Stack Overflow用户
提问于 2022-05-13 13:48:11
回答 1查看 163关注 0票数 0

我想发出元素,在这些元素中,元素被延迟了一段时间,而没有最初的延迟。

我不能用

代码语言:javascript
复制
Flux.delayElements(Duration)

因为它在第一个元素之前延迟了初始延迟,这在我的情况下是不被期望的。

考虑举个例子

代码语言:javascript
复制
Flux.range(1, n)

我希望有以下设想:

1延迟2延迟3延迟..。

当前版本的Flux.delayElements的工作方式如下:

延迟1延迟2延迟3 ..。

我现在的解决办法

代码语言:javascript
复制
Flux.interval(
    Duration.ZERO,
        Duration.ofSeconds(1)
        )
// make some call

但是它会引发类似于:Spring WebFlux (reactor). Error when zipWith - Could not emit tick due to lack of requests的问题

您能为这种情况提出其他解决方案吗?或者应该提出一些问题,以便在Flux中引入新的方法来解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2022-05-13 21:03:12

您可以使用Mono.delay()来控制延迟。

代码语言:javascript
复制
@Test
void test() {
    var stream = Flux.range(1, 10)
            .concatMap(i -> 
                    Mono.delay(Duration.ofSeconds(i))
                            .thenReturn(i)
            )
            .log();

    StepVerifier.create(stream)
            .thenConsumeWhile(rec -> true)
            .verifyComplete();
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72230641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档