java – 为什么在这种情况下我们需要Publish和RefCount Rx运算符?

我正在努力熟悉反应背压处理的问题,特别是通过阅读这个wiki:https://github.com/ReactiveX/RxJava/wiki/Backpressure

In the buffer paragraph,我们有更多涉及的示例代码

// we have to multicast the original bursty Observable so we can use it
// both as our source and as the source for our buffer closing selector:
Observable

如果我理解正确,我们通过为缓冲区运算符生成去抖动信号流来有效地去除突发源流.

但为什么我们需要在这里使用发布和引用计数器?如果我们放弃它们会导致什么问题?评论并没有让我更清楚,认情况下RxJava Observables不是多播吗?

最佳答案
答案在于hot and cold观察点之间的区别.

缓冲区运算符组合了两个流,无法知道它们有一个共同的源(在您的情况下).当激活(订阅)时,它将同时订阅它们,作为回报,它将触发对原始输入的2个不同订阅.

现在有2件事情可能发生,要么输入是热的可观察的,订阅没有效果,只能注册监听器,一切都将按预期工作,或者它是一个冷可观察,每个订阅将导致潜在的不同和不同步的流.

例如,冷可观察量可以是在订阅时执行网络请求并且通知结果的冷可观察量.不调用发布意味着将完成2个请求.

发布refcount / connect是将冷可观察变为热点的常用方法,确保单个订阅将发生,并且所有流的行为都相同.

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...