当前位置: 首页 > 面试题库 >

反应堆取消订阅的方式

祁飞翰
2023-03-14
问题内容

我试图弄清Reactor
Project,现在正在寻找取消订阅的方法。我知道在进行例如Flux的订阅后,我可以获取可用于发送onCancel信号的Cancellation对象的引用,但这仅是在进行订阅之后,并且我需要将该引用保留在某种Collection中。

有更好的方法来获取Cancellation对象吗?或只是取消订阅。也许某个地方包含对所有活动订阅的引用-是的,这太棒了…


问题答案:

在Reactor中,Subscription在您调用之前取消a是没有意义的subscribe()(因为正是这种方法创建了,Subscription并沿信号链向上传播该信号以开始发射数据)。

所有订阅都没有集中的位置,这没有多大意义,因为您需要一种方法来查找要取消的特定订阅(请记住,链中的每个运营商也可以使用中间订阅…)。

请注意,一些运营商还将代表您取消订阅!take(int)例如,就是这样,一旦发出足够的项目,它将取消上游:

Flux.just(1, 2, 3, 4).log().take(2).subscribe(System.out::println);

将输出:

14:17:48.729 [main] INFO  reactor.Flux.Array.1 - | onSubscribe([Synchronous Fuseable] FluxArray.ArraySubscription)
14:17:48.732 [main] INFO  reactor.Flux.Array.1 - | request(unbounded)
14:17:48.732 [main] INFO  reactor.Flux.Array.1 - | onNext(1)
1
14:17:48.732 [main] INFO  reactor.Flux.Array.1 - | onNext(2)
2
14:17:48.732 [main] INFO  reactor.Flux.Array.1 - | cancel()


 类似资料:
  • 我使用SockJS和StompJS,当我在浏览器中打开我的应用程序时,有时它会在连接到websocket之前尝试订阅一些主题。我希望主题订阅等待应用程序连接到websocket。 这就是我实现此代码的原因,我将其称为: 因此,我只在连接状态为时才订阅该主题,并且只有在客户端首次成功连接时才会调用该主题。 我想稍后从主题中取消订阅,所以我需要内部订阅返回的对象,我还需要内部订阅的消息。 我所实现的很

  • 我通读了RxJS文档,并希望确保我理解了< code > subscriber . unsubscribe()和< code > subscriber . complete()之间的区别。 假设我有一个有两个订阅者的可观察对象,订阅者1和订阅者2。如果订阅者1对其订阅调用取消订阅,它将不再接收来自可观察对象的通知,但订阅者2将继续接收它们。 <代码>的文档。complete(): 观察者回调,用于

  • 一个OBLOQ最多同时订阅5个topic,可以对已经订阅的topic进行取消订阅。 请求方式: "|4|1|6|topic|\r" 参数: topic 取消订阅的topic,获取设备topic可参考教程 返回值: "|4|1|6|1|\r" 取消订阅成功 "|4|1|6|2|2|\r"取消订阅失败 "|4|1|6|2|1|\r" topic不存在,取消订阅失败 Arduino样例: softSer

  • 我读到过,通常您不必明确地取消对或的订阅,因为: ActivatedRoute及其可观察到的内容与路由器本身绝缘。当不再需要路由组件时,路由器会销毁该组件,并且注入的ActivatedRoute也会随之死亡。 每当有人导航到另一个组件/页面时,就会被再次订阅。只有当事件是的实例时,我才必须在路由器订阅中执行此操作,因为在此之前,url参数还不可用。 我的问题是,那些订阅会发生什么?他们是自动退订还

  • 本文向大家介绍system.reactive 订阅/取消订阅可观察对象(IDisposable),包括了system.reactive 订阅/取消订阅可观察对象(IDisposable)的使用技巧和注意事项,需要的朋友参考一下 示例 订阅返回IDisposable: 当您准备取消订阅时,只需处置订阅即可:            

  • 微信文档:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/subscribe-message/subscribeMessage.addTemplate.html 组合模板并添加至帐号下的个人模板库 $tid = 563; // 模板标题 id,可通过接口获取,也可登录小程序后台查看获取 $kidLi