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

RxJS 订阅者取消订阅与完成

颜阳炎
2023-03-14

我通读了RxJS文档,并希望确保我理解了< code > subscriber . unsubscribe()和< code > subscriber . complete()之间的区别。

假设我有一个有两个订阅者的可观察对象,订阅者1和订阅者2。如果订阅者1对其订阅调用取消订阅,它将不再接收来自可观察对象的通知,但订阅者2将继续接收它们。

<代码>的文档。complete():

观察者回调,用于从可观察对象接收类型完整的无值通知。通知观察者观察对象已完成基于推送的通知的发送。

这是否意味着在上面的相同场景中,订阅者1可以调用完成,它将结束可观察的并停止订阅者1和订阅者2的流?

共有2个答案

孙琨
2023-03-14

根据我使用API的经验,我的想法是:你不需要调用ObservableObservatable会调用你。如果您创建Subject,然后下一个/完成Subject,您就可以触发事件。

这就是为什么您将看到一些示例,这些示例将“私有”主体作为类成员,但公开的项目是可观察对象。期望您将订阅 Observable,顶级类将使用 next()error() 通过 Subject 调度值。完成可观察量/主题的唯一方法是完成()主题

此外,订阅者没有un的()方法,订阅有。

逄皓轩
2023-03-14

订阅者不调用 complete()。您可以在主题上调用 complete(),或者更典型的是使用 take()、takeWhile()...

例如:

const s = new Subject();
const subscriber1 = s.subscribe(...);
const subscriber2 = s.subscribe(...);
s.complete(); // both subscribers will receive the complete notification

// or with `take(1)` operator it'll call `complete()` for you
const subscriber1 = s.take(1).subscribe(...);
const subscriber2 = s.take(1).subscribe(...);
s.next(42); // both subscribers will receive the complete notification

请注意,在主体上调用 complete() 会更改其内部状态,并且无法使其再次不完整,而只是取消订阅订阅者对主体没有影响。

有点类似的问题:最终在订阅上可以观察到

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

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

  • 开普勒消息目前分为三大类:公告,告警和通知。 通知中根据不同的操作事件类型,分为十几个事件。每个事件都跟项目操作相关。便于接收项目操作变更的通知。 分类 事件 公告 Alarm 告警 Proclaim 通知 Build,Apply,Audit,Delete,Rollback,Logging,Reboot,Command,Storage,Extend... 订阅界面: 用户中心,点击头像,下拉菜单→

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

  •  说明 调用方法: $.f2eAct.yyue(el,options); 函数说明: Y阅功能,包含查询用户是否订阅,用户订阅,用户取消订阅 参数说明: 参数名 类型 说明 备注 el string DOM元素对象 必要 pcode int 订阅媒体的id 必要 gcode int 媒体用户分组id 必要 success function 查询是否订阅回调方法 无 confirm functio