rxSwift从零开始的代码6

2018-02-28  本文已影响0人  卖毛玉的小贩

上一篇文章,我们讲解了Subject的第二种机制。

BehaviorSubject

除了给订阅者发送上一条消息之外。

我们还能给订阅者发送之前消息的范围。

也就是本章讲解的主角。

ReplaySubject

它跟BehaviorSubject一样也会给订阅者发送历史消息,区别在于。

1.ReplaySubject没有默认消息,订阅空的ReplaySubject不会收到任何消息,而空的BehaviorSubject会获得value默认内容。

2.ReplaySubject自带一个缓冲区,当有订阅者订阅的时候,它会向订阅者发送缓冲区内的所有消息。

有了前面的两次理解后,想必这个也难不倒你们。

废话不多说,直接来创建一个吧。

let subject =ReplaySubject<String>.create(bufferSize:2)

依旧用的是泛型string类型。

这里注意下,ReplaySubject的创建中,必须得要设置下create(bufferSize:2)缓冲区。

接着我们快速的用

let sub1 = subject.subscribe(

            onNext: {print("sub1 - \($0)")}

)

来接受他的消息。

subject.onNext("111")

subject.onNext("222")

subject.onNext("333")

sub1.dispose()

顺序输入进去,和之前一样,sub1自然会依次打印123.

这时我们添加第二订阅者sub2

let sub2 = subject.subscribe(

            onNext: {print("sub2 - \($0)")}

        )

        sub2.dispose()

依次输入并且打印,你们猜会发生什么情况?

答案嘛,自然是这样滴!

sub1 - 111

sub1 - 222

sub1 - 333

sub2 - 222

sub2 - 333

不知道是不是和各位想的一样?

但其实在前面两个机制的理解下,这个机制应该十分好懂吧?

正所谓换汤不换药,轻轻松松~

不过好像这三种就已经包含全部的Subject用法了,难道还有机制吗?

我会告诉你,还有的。

那么下章见咯~

下一章传送门:rxSwift从零开始的代码7 - 简书

上一篇 下一篇

猜你喜欢

热点阅读