当前位置: 首页 > 知识库问答 >
问题:

无法触发信号停止块在项目Reactor

傅和璧
2023-03-14

我想在Project Retor中尝试block可选。根据描述,它用于

订阅此单声道并无限期地阻止,直到收到下一个信号或单声道完成空

我尝试了以下方法。

Mono<Void> triggerSignal() {
    Signal.next("signal");
}

triggerSignal()
    .delayElement(Duration.ofSeconds(30))
    .blockOptional();

System.out.println("Outside chain");

我希望看到“外链”在30年代延迟之前打印出来。然而,我必须等待30多岁。

没有收到信号吗?当收到信号时,程序块应该停止?这是发送信号的正确方式吗?

共有1个答案

桂高昂
2023-03-14

< code>triggerSignal()确实会立即产生信号。

但是,链中的下一项是delayElement()调用,它将始终延迟30发出的元素(在它到达反应式链中的下一个运算符之前);因此block可选()在30秒过去之前永远不会“看到”信号。

这听起来像是你想,相反,在你等待信号时阻止长达30秒。如果是这种情况,则可以将持续时间传递给 blockOptional() 而不是延迟元素,例如:

triggerSignal()
    .blockOptional(Duration.ofSeconds(30));
 类似资料:
  • 我正试图为我的大学做一个刽子手程序,我需要一些帮助。一次尝试后的程序进展顺利。最后,你可以选择玩另一个游戏或停止程序,但它保持答案是肯定的,要求一个新词。我怎么能访问菜单后,一些尝试。你能帮帮我吗?

  • 问题内容: 我有一个包含多个记录的表: 用户名(例如“ TOM”) Question_ID(例如“ q002”) 答案(例如“ D”) 我想创建一个触发器,以便没人可以两次提交相同问题的答案。它仅 是触发器 。 问题答案: 创建触发器

  • 我想在try块中捕获PyCharm的stop信号(当stop被按下时),但是我不知道这个信号是什么或者如何在代码中捕获它。JetBrains在他们的文档中没有提供这方面的见解。 我尝试将其捕获为,但它似乎根本不是异常。 这在编程上是完全可以捕获的吗?

  • 我从两个通道中获得了多个的goroutine:一个chan提供数据,一个chan提供信号(类似于done/quit通道)。 我使用signals通道来捕获信号(杀死)并优雅地关闭Goroutines。 当我终止正在运行的进程时,我会看到来自的打印消息。我预计,一旦通道关闭,goroutines将thecase并返回。 但他们不停地奔跑;它们继续处理中的项。好像被忽视了。我在这里漏掉了什么?频道不是

  • 现在,如果我配置一个Maven作业,我没有“声纳”作为构建后的操作。我只有“调用独立声纳分析”,这是一个声纳运行器,我不想要。 我在这里漏掉了什么?

  • 问题内容: 如果我有标记: .a类具有与之关联的悬停类 .b类具有与之关联的伪元素…像这样: CSS是否有可能防止伪元素触发.a类悬停? 小提琴 问题答案: 以下CSS为现代浏览器(而非IE10-)提供了诀窍: 允许元素不接收悬停/点击事件。 警告 对非SVG元素的支持处于相对早期的状态。developer.mozilla.org给您以下警告: 在CSS中将指针事件用于非SVG元素是实验性的。 该