RxSwift - 学习笔记二

2020-11-11  本文已影响0人  菲特峰

(1)可连接的序列和一般序列不同在于:有订阅时不会立刻开始发送事件消息,只有当调用 connect() 之后才会开始发送值。
(2)可连接的序列可以让所有的订阅者订阅后,才开始发出事件消息,从而保证我们想要的所有订阅者都能接收到事件消息

publish 方法会将一个正常的序列转换成一个可连接的序列。同时该序列不会立刻发送事件,只有在调用 connect 之后才会开始。

replay 同上面的 publish 方法相同之处在于:会将将一个正常的序列转换成一个可连接的序列。同时该序列不会立刻发送事件,只有在调用 connect 之后才会开始。* replay 与 publish 不同在于:新的订阅者还能接收到订阅之前的事件消息(数量由设置的 bufferSize 决定)

multicast 方法同样是将一个正常的序列转换成一个可连接的序列。* 同时 multicast 方法还可以传入一个 Subject,每当序列发送事件时都会触发这个 Subject 的发送。

refCount 操作符可以将可被连接的 Observable 转换为普通 Observable
即该操作符可以自动连接和断开可连接的 Observable。当第一个观察者对可连接的 Observable 订阅时,那么底层的 Observable 将被自动连接。当最后一个观察者离开时,那么底层的 Observable 将被自动断开连接。

该操作符将使得观察者共享源 Observable,并且缓存最新的 n 个元素,将这些元素直接发送给新的观察者。
简单来说 shareReplay 就是 replay 和 refCount 的组合

该操作符会将 Observable 的所有元素都先拖延一段设定好的时间,然后才将它们发送出来

使用该操作符可以进行延时订阅。即经过所设定的时间后,才对 Observable 进行订阅操作。

该操作符可以将序列产生的事件,转换成元素。
通常一个有限的 Observable 将产生零个或者多个 onNext 事件,最后产生一个 onCompleted 或者 onError 事件。而 materialize 操作符会将 Observable 产生的这些事件全部转换成元素,然后发送出来。

该操作符的作用和 materialize 正好相反,它可以将 materialize 转换后的元素还原

使用该操作符可以设置一个超时时间。如果源 Observable 在规定时间内没有发任何出元素,就产生一个超时的 error 事件

使用 using 操作符创建 Observable 时,同时会创建一个可被清除的资源,一旦 Observable 终止了,那么这个资源就会被清除掉了。

当遇到 error 事件的时候,就返回指定的值,然后结束。

该方法可以捕获 error,并对其进行处理。
同时还能返回另一个 Observable 序列进行订阅(切换到新的序列)。

使用该方法当遇到错误的时候,会重新订阅该序列。比如遇到网络请求失败时,可以进行重新连接。 retry() 方法可以传入数字表示重试次数。不传的话只会重试一次。

我们可以将 debug 调试操作符添加到一个链式步骤当中,这样系统就能将所有的订阅者、事件、和处理等详细信息打印出来,方便我们开发调试

上一篇 下一篇

猜你喜欢

热点阅读