异步和阻塞操作符
2018-09-28 本文已影响29人
CyrusChan
异步操作符
如下操作符 是部分有明显区别 的 rxjava-async 模块 。他们被用于转换同步函数到Observable中去。
- start( )— 创建一个发射函数返回值的Observable
- toAsync( ) or asyncAction( ) or asyncFunc( ) —转换一个function 或者Action到一个执行函数且发射它的返回值的Observable.
- startFuture( ) —转换一个返回Future的函数到一个发射这个Future的返回值的Observable.
- deferFuture( )— 转换一个返回Observable的Furture到一个Observable,但是不要尝试获取Future返回的Observable直到一个Subscriber订阅它
- forEachFuture( )— 传入Subscriber函数到一个Observable但是也让它的行为像一个阻塞到它完成的Future
- fromAction( )— 将一个Action转换成一个调用action且当有Subscriver订阅时发射它的结果的Observable
- fromCallable( )— 将一个Callable转换成调用callable且发射它的结果或者异常的Observable。
- fromRunnable( )— 将一个Runnable转换成Observable,这个Observable执行runable且发射它的结果当有订阅者订阅的时候
- runAsync( ) —返回一个 StoppableObservable ,这个StoppableObservable 发射多个 action 当被一个特定的scheduler的action生成的时候。
Blocking Observable Operators
这章节解释 BlockingObservable
的子类。一个阻塞的Observable 通过在被该Observable发射的item上 提供一系列操作符 来 继承 普通的Observable类 。
为了把一个Observable转换成一个BlockingObservable, 可以使用Observable.toBlocking()函数或者BlockingObservable.from( )
函数。
- forEach( )— 对每个被Observable发射的item执行一个函数,且阻塞到Observable完成。
- first( ) —阻塞到Observable发射一个item,接着返回被Observable发射的第一个item。
- firstOrDefault( )— 阻塞直到Observable发射一个item或者完成,接着返回第一个被Observable发射的item 或者一个默认的Item,如果Observable没有发射item。
- last( ) —阻塞直到Observable完成,接着返回最后一个被Observable发射的item
- lastOrDefault( )— 阻塞直到Observable完成,接着返回最后一个被Observable发射的item,或者返回默认的item如果Observable没有发射最后一个item
- mostRecent( )— 返回一个总是返回最近被Observable发射的item的迭代器
- next( )— 返回一个Iterable,这个Iterable阻塞直到Observable发射另一个item,接着返回这个item.
- latest( )— 返回一个Iterable,这个Iterable阻塞直到 除非Observable发射一个没有被迭代器返回过的item,接着返回这个item.
- single( )— 如果Observable完成了在发射单一item之后,返回这个item,否则抛出异常。
- singleOrDefault( )— 如果Obseravble完成了在发射单一item之后,返回这个item,否则返回一个默认的item。
- toFuture( )— 把一个Observable转换成一个Furture
- toIterable( )— 把Observable发射的序列 转换成Iterable
- getIterator( ) —把Observable发射的序列 转换成 Iterator
这篇文档带有一个修正过的“marble图表”的解释。如下是”marble图表”如何表示阻塞的Observable

see also:
- javadoc:
BlockingObservable
- javadoc:
toBlocking()
- javadoc:
BlockingObservable.from()
附录:相似的阻塞和非阻塞操作符
