Rxjava(Subject)-PublishSubject--demo

PublishSubject只会把在订阅发生的时间点之后来自原始Observable的数据发射给观察者。需 要注意的是,PublishSubject可能会一创建完成就立刻开始发射数据(除非你可以阻止它发 生),因此这里有一个风险:在Subject被创建后到有观察者订阅它之前这个时间段内,一个 或多个数据可能会丢失。如果要确保来自原始Observable的所有数据都被分发,你需要这样 做:或者使用Create创建那个Observable以便手动给它引入"冷"Observable的行为(当所有观 察者都已经订阅时才开始发射数据),或者改用ReplaySubject。


如果原始的Observable因为发生了一个错误而终止,PublishSubject将不会发射任何数据,只 是简单的向前传递这个错误通知。


demo

PublishSubject<Integer> subject = PublishSubject.create();
        subject.onNext(1);
        subject.subscribe(new Action1<Integer>() {
            @Override
            public void call(Integer integer) {
                System.out.println("-----" + integer);
            }
        }, new Action1<Throwable>() {
            @Override
            public void call(Throwable throwable) {
                System.out.println("onError");
            }
        }, new Action0() {
            @Override
            public void call() {
                System.out.println("onComplete");
            }
        });
        subject.onNext(2);
        subject.onNext(3);
        subject.onNext(4);
        subject.onCompleted();
输出

-----2
-----3
-----4
onComplete





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值