美文网首页
rxSwift从零开始的代码6

rxSwift从零开始的代码6

作者: 卖毛玉的小贩 | 来源:发表于2018-02-28 13:40 被阅读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 - 简书

    相关文章

      网友评论

          本文标题:rxSwift从零开始的代码6

          本文链接:https://www.haomeiwen.com/subject/saebxftx.html