当前位置: 首页 > wzjs >正文

上海市建设安全协会网站孟 侠友情链接交换的方法

上海市建设安全协会网站孟 侠,友情链接交换的方法,敬请期待的英语,做广告公司网站建设价格python容易编辑,因此用pyrx代替rxjava3做演示会比较快捷。 pyrx安装命令: pip install rx 一、Subject(相当于 RxJava 的 PublishSubject) PublishSubject PublishSubject 将对观察者发送订阅后产生的元素,而在订阅前…

python容易编辑,因此用pyrx代替rxjava3做演示会比较快捷。

pyrx安装命令: pip install rx

一、Subject(相当于 RxJava 的 PublishSubject

PublishSubject

PublishSubject 将对观察者发送订阅后产生的元素,而在订阅前发出的元素将不会发送给观察者。如果你希望观察者接收到所有的元素,你可以通过使用 Observable 的 create 方法来创建 Observable,或者使用 ReplaySubject。

如果源 Observable 因为产生了一个 error 事件而中止, PublishSubject 就不会发出任何元素,而是将这个 error 事件发送出来。

特性

  • 只发送订阅后产生的事件,不保留历史值。
  • 新订阅者只能收到订阅后发射的元素。

适用场景
实时数据流(如用户输入、网络事件)。

示例代码
from rx.subject import Subjectsubject = Subject()# 订阅1在事件发射前订阅
subject.subscribe(on_next=lambda value: print("订阅1:", value),on_error=lambda error: print("错误:", error),on_completed=lambda: print("完成")
)subject.on_next("🐶")  # 订阅1收到: 🐶# 订阅2在事件发射后订阅
subject.subscribe(on_next=lambda value: print("订阅2:", value),on_error=lambda error: print("错误:", error),on_completed=lambda: print("完成")
)subject.on_next("🐱")  # 订阅1收到: 🐱,订阅2收到: 🐱

二、ReplaySubject

ReplaySubject

ReplaySubject 将对观察者发送全部的元素,无论观察者是何时进行订阅的。

这里存在多个版本的 ReplaySubject,有的只会将最新的 n 个元素发送给观察者,有的只会将限制时间段内最新的元素发送给观察者。

如果把 ReplaySubject 当作观察者来使用,注意不要在多个线程调用 onNextonError 或 onCompleted。这样会导致无序调用,将造成意想不到的结果。

特性

  • 缓存所有发射过的事件,新订阅者会收到全部历史事件。
  • 可通过 buffer_size 参数限制缓存数量。

适用场景
需要回放历史数据的场景(如配置变更、初始化数据)。

示例代码
from rx.subject import ReplaySubjectsubject = ReplaySubject(buffer_size=2)  # 只缓存最近2个事件subject.on_next("🐶")
subject.on_next("🐱")
subject.on_next("🐭")# 订阅时会收到缓存的最后2个事件: 🐱, 🐭
subject.subscribe(on_next=lambda value: print("订阅1:", value))subject.on_next("🐹")  # 订阅1收到: 🐹

三、BehaviorSubject

BehaviorSubject

当观察者对 BehaviorSubject 进行订阅时,它会将源 Observable 中最新的元素发送出来(如果不存在最新的元素,就发出默认元素)。然后将随后产生的元素发送出来。

如果源 Observable 因为产生了一个 error 事件而中止, BehaviorSubject 就不会发出任何元素,而是将这个 error 事件发送出来。

特性

  • 缓存最后一个发射的事件,新订阅者会立即收到该值。
  • 创建时必须提供初始值。

适用场景
状态管理(如用户登录状态、系统配置)。

示例代码
from rx.subject import BehaviorSubjectsubject = BehaviorSubject("初始值")subject.on_next("🐶")# 订阅时会收到最后一个值: 🐶
subject.subscribe(on_next=lambda value: print("订阅1:", value))subject.on_next("🐱")  # 订阅1收到: 🐱

四、AsyncSubject

AsyncSubject

AsyncSubject 将在源 Observable 产生完成事件后,发出最后一个元素(仅仅只有最后一个元素),如果源 Observable 没有发出任何元素,只有一个完成事件。那 AsyncSubject 也只有一个完成事件。

它会对随后的观察者发出最终元素。如果源 Observable 因为产生了一个 error 事件而中止, AsyncSubject 就不会发出任何元素,而是将这个 error 事件发送出来。

特性

  • 只发射最后一个事件,且仅在 on_completed() 后发射。
  • 如果未调用 on_completed(),订阅者不会收到任何值。

适用场景
只关心最终结果的场景(如计算完成后的结果)。

示例代码
from rx.subject import AsyncSubjectsubject = AsyncSubject()subject.subscribe(on_next=lambda value: print("订阅1:", value),on_error=lambda error: print("错误:", error),on_completed=lambda: print("完成")
)subject.on_next("🐶")
subject.on_next("🐱")
subject.on_completed()  # 订阅1收到: 🐱(最后一个值)并触发完成

五、对比表格

Subject 类型历史值处理新订阅者行为触发条件
Subject不保留历史值只接收订阅后的事件无特殊条件
ReplaySubject缓存所有或部分历史值接收全部缓存的历史事件无特殊条件
BehaviorSubject缓存最后一个值立即接收最后一个值无特殊条件
AsyncSubject缓存最后一个值仅在 on_completed() 后接收必须调用 on_completed()

六、注意事项

  1. 内存管理
    ReplaySubject 和 BehaviorSubject 会持有历史值,需注意避免内存泄漏。

  2. 线程安全
    RxPY 的 Subject 默认非线程安全,多线程环境下需自行处理同步。

  3. 生命周期管理
    使用 dispose() 方法释放资源,避免不必要的事件处理。

rxjava3具体实例:

在引入rxjava3之前的写法:通过监听器,实现register、unregister,代码逻辑臃肿、结构复杂、过一段时间之后自己写的代码都看起来很费劲。

引入rxjava3之后,activity、fragment、service之间解除了强耦合,代码嵌套深度降低、逻辑交叉点减少,代码清爽很多。

rx是响应式编程框架的集大成者,相当于应用内部的轻量级的ASMQ(高级消息队列),前端是ui和逻辑分离的特点,需要大量的数据双向多层传递。  用rx可以从出发点直达终点,数据不需要层层传递,比如说原来的传递路径是6层,你修改一次数据类,你就需要修改6个地方的代码,用rx只需要修改前后紧挨着的2个数据管道之间的代码。

http://www.dtcms.com/wzjs/107067.html

相关文章:

  • 沧州做网站推广公司百度怎么发布短视频
  • wordpress 邮件投稿信息流优化师简历模板
  • 旅游攻略网站模板seo博客
  • 大型网站 解决方案 技术网络营销有哪些形式
  • 今天西安最新通告短视频seo营销系统
  • 做网站做小程序推广杭州哪家seo公司好
  • 做外单网站亚马逊快手seo关键词优化
  • 新网站多久被百度收录北京网站seo哪家公司好
  • 网站建设丶金手指下拉十五深圳sem优化
  • 24小时自助下单平台网站便宜广州网站建设工作室
  • WordPress优化手机端seo目标关键词优化
  • 佛山网站建设找千界泉州百度竞价开户
  • 怎样在工商局网站上做变更网络营销外包
  • 做网站下载好素材之后怎么建造主页网络营销实施方案
  • 外贸企业网站开发公司做网站怎么做
  • 有特色的网站设计自己搜20条优化措施
  • wordpress 搜索本站网络推广的工作好做吗
  • 涟水网站建设东莞网络营销销售
  • 做网站推广的联系方式怎样在百度上免费做广告
  • 长沙做网站价格杭州优化关键词
  • 合肥企业网站建设专家cpa广告联盟
  • wordpress小成语韶关网站seo
  • 做招聘网站都需要什么手续推广关键词排名查询
  • 泊头网站建设服务新媒体运营师证书
  • 网站建设 公司 常州有名的seo外包公司
  • 沂水网站制作中国站长站
  • 网站开发培训中心网站怎么seo关键词排名优化推广
  • 网站界面设计的基本原则是什么seo优化代理
  • 包头网站建设制作好搜自然seo
  • 美女做暖暖免费视频2017网站深圳seo优化外包