错误处理操作符、过滤器
2018-09-29 本文已影响8人
CyrusChan
Error Handling Operators
这儿有不同种类的错误操作符,你可以用来对来自Obseravble的错误通知做出反应或者恢复。例如,你可以:
-
吞下这个错误且转换到备用的Obseravble去继续这个序列
-
吞下这个错误且发射一个默认的item
-
吞下这个错误且立即尝试重启错误的Obseravble
-
吞下这个错误且尝试重启错误的Obseravble在一些回退间隔之后
下面解释这些操作符。
- onErrorResumeNext( )— 指示一个Obseravble发射一系列的item 如果它遇到了一个错误
- onErrorReturn( )— 指示一个Obseravble发射一个特殊的item当它遇到一个错误。
- onExceptionResumeNext( )— 指示一个Obseravble继续发射item在它遇到一个异常后(但不是另一种的异常)
- retry( )— 如果一个源Obseravble发射一个错误,重新订阅它希望它将不出错的完成。
- retryWhen( )— 如果一个源Obseravble发射一个错误,把这个错误传给另一个Obseravble去判定是否重新订阅该Obseravble。
Filtering Observables
下面展示一些你可以过滤和选择被Obseravble发射的item的操作符。
- filter( )— 过滤杯一个Obsreavble发射的item
- takeLast( )— 仅仅发射被Observable最后发射的n个item
- last( )— 仅仅发射被Observable最后发射的一个item
- lastOrDefault( ) —仅仅发射被Observable最后发射的一个item或者默认值如果源Observable是空的。
- takeLastBuffer( ) —仅仅发射被Observable最后发射的n个item以一个单一的list item
- skip( )— 忽略前n个被Observable发射的item
- skipLast( )— 忽略后n个被Observable发射的item
- take( )— 仅仅发射前n个被Observable发射的item
- first( )**** and ****takeFirst( )— 仅仅发射第一个被Observable发射的item或者第一个满足某些条件的item
- firstOrDefault( )— 仅仅发射第一个被Observable发射的item或者第一个满足某些条件的item,或者一个默认的值如果源Obseravble是空的。
- elementAt( )— 发射第n个被Observable发射的item
- elementAtOrDefault( ) —发射第n个被Observable发射的item或者默认的item如果源Obseravble发射的少于n个item
- sample( )**** or ****throttleLast( )— 发射最近被Observable发射的item在周期时间内。
- throttleFirst( )— 发射第一个被Obseravble发射的item 在周期时间内
- throttleWithTimeout( )**** or ****debounce( )— 仅从源Observable发射一个个item在过去了一段特殊的时间,这段时间Observable没有发射任何其他item.
- timeout( )— 从源Observable发射item,但是发出一个异常如果没有Item被发射在一段特殊时间段内。
- distinct( )— 去掉重复的被源Obseravble发射的item。
- distinctUntilChanged( )— 去掉连续重复的被源Obseravble发射的item
- ofType( )— 仅从特定类型的源Obseravble发射这些item
- ignoreElements( )— 抛弃被源Obseravble发射的item且仅通过错误和完成的通知。