RxSwift学习历程(二)

上一篇,我们学习了如何创建一个observable,接下来我们继续学习,直接开始吧

订阅序列(Subscribing to observables)

NotificationCenter相信大家一定很熟悉,其向观察者(observer)播送通知(notification)。在Rx中不必再那么麻烦了。有更高效的方法来解决通知这一功能点。

在上一篇的例子中,我们将代码改为以下形式:

RxSwift学习历程(二)_第1张图片

现在,我们在这段代码下,添加如下代码来订阅observable:

观察调试板面,你会得到如下

RxSwift学习历程(二)_第2张图片

当我们查看subscribe操作符时,我们会发现,他其实是在操作一个逃逸闭包,这个逃逸闭包操作了一个Int型事件(Event)且该事件不返回任何东西。另,subscribe操作符返回了一个Disposable类型的东西。

在打印结果中我们可以看到,next事件发生了三次,然后是completed事件。而在实际的编码中,我们才不关心事件发生了几次,更关心的是每次事件的结果,也就是值,对吧。

为了能直接获取每次事件发生后所产生的值,我们将代码改成下面这个样子

RxSwift学习历程(二)_第3张图片

呐,打印板就会变成下面的样子

注意:所有的操作符,或者我们说是方法的标志符,其内部所含的东西叫做元素,比如说next(1),这里面的1,就是操作符next的其中一个元素。在Rx中任何序列,都是通过点语法的方式调用。

尝试过让Observable为空吗?(特殊操作符,想记了记,不想记算求)来试试

试着订阅他

RxSwift学习历程(二)_第4张图片

看看打印版什么变化,由于completed操作符不含任何元素,所以他打印了一段message----“Completed”。

这玩意该咋用呢?什么时候用呢?

当你想要返回一个立即终止的或着有意地含有零值的observable时,还是很好用的。

与empty相对的,则是never操作符了,如字面意思,表示永不终止,写法如下

RxSwift学习历程(二)_第5张图片
不会打印任何值

到现在为止,我们都一直在操作显式变量的observables,然而我们也可以从一系列值生成observables。

范例如下:

RxSwift学习历程(二)_第6张图片

我们来一层一层的剖析这段代码

1、通过range操作符创建了一个observable,该操作符由一个start整型值和一个序列的整型值count来生成。

2、每一次发出时间的时候计算并打印第n个斐波拉切数。


除了never()的例子,到目前为止,我们都在使用可以自动发出,完成事件并自然终止的observable。

你可能感兴趣的:(RxSwift学习历程(二))