博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Rxjava Subjects
阅读量:6764 次
发布时间:2019-06-26

本文共 1488 字,大约阅读时间需要 4 分钟。

提到调用observable的publish和connect方法后可以将一个Observable发出的对象实时传递到订阅在上的subscriber。

这个和Rxjava中Subject的概念十分相像。Subject是可以理解为桥接或者代理,可以订阅Observable也可以自己作为Observable提供Subscriber订阅。
Rxjava提供PublishSubject其功能与上次提到的publish+connect一样

@Testpublic void testPublishSubject() throws InterruptedException {    //创建一个publish subject    PublishSubject subject = PublishSubject.create();    Observable.create(sub->{        new Thread(()->{            int i=0;            while(i<5){                sub.onNext(i++);                try {                    Thread.sleep(500);                } catch (InterruptedException e) {                }            }        }).start();    }).subscribe(subject);//将subject订阅在原始Observable上    //在subject上订阅子subscriber    subject.subscribe(x->{        System.out.println("1st sub "+x);    });    Thread.sleep(1000);    System.out.println("2nd subscriber start");    //一秒后在subject上订阅子subscriber    subject.subscribe(x->{        System.out.println("2nd sub "+x);    });    Thread.sleep(10000);}--------输出---------1st sub 11st sub 22nd subscriber start1st sub 32nd sub 31st sub 42nd sub 4

主要subject种类

subject的用法大致都如上所示,可以subscribe也可以被subscribe,subject的不同是可以同时订阅多个observable并同时广播到子subscriber上。

AsyncSubject

433963-20161105183609424-633604544.png

该subject会等到原observable结束并发出原observable最后一个发出的对象或错误。

BehaviorSubject

433963-20161105184000002-1577734835.png

该subject会发出最近的一个对象并持续发出接下来的所由对象。

PublishSubject

433963-20161105184017533-1701232658.png

上面已经介绍过,该subject会发出订阅后原Observable所发出的对象。

ReplaySubject

433963-20161105184029268-1351458413.png

该subject会返回从原始observable开始的所有对象。要注意的是这个可能存在潜在的OOM风险。

转载于:https://www.cnblogs.com/resentment/p/5988251.html

你可能感兴趣的文章
吴恩达机器学习笔记16-决策边界(decision boundary)
查看>>
分水岭算法(理论+opencv实现)
查看>>
暑假集训第六周contest1
查看>>
libnl3.2.25安装编译
查看>>
第一天
查看>>
go语言字符串处理
查看>>
hihocoder 1014----Trie树
查看>>
【2016.5.27】再见,软件工程,你好,软件工程。
查看>>
POJ 3237 Tree
查看>>
hdu 2586 How far away ? ( 离线 LCA , tarjan )
查看>>
ISTQB测试人员认证 初级(基础级)大纲
查看>>
核反应堆
查看>>
sencha touch 2 nestlist中获得绑定store中值的办法
查看>>
比较几个统计函数
查看>>
Sass基础用法
查看>>
iOS开发-UIImageView高效设置Radius
查看>>
蛇形填数
查看>>
第七章:Oracle完整后台进程&内存结构图
查看>>
链表中环的入口结点
查看>>
初来乍到--------smarty
查看>>