ReactiveX是一个API,它有很多实现。
Observable填充了异步遍历多元素的空白
| single items | multiple items | |
| synchronous | T getData() | Iterable<T> getData() |
| asynchronous | Future<T> getData() | Observable<T> getData() |
如果将Iterable看成是pull模式(因为是consumer阻塞向producer拉数据),Observable则是push模式(producer主动推数据给consumer)
| event | Iterable (pull) | Observable (push) |
| retrieve data | T next() | onNext(T) |
| discover error | throws Exception | onError(Exception) |
| complete | !hasNext() | onCompleted() |
对于下例getData方法来说,Observable可以有很多实现,但对于Observer来说如何实现并不重要。
public Observable<data> getData();
Iterable代码示例
getDataFromLocalMemory() .skip(10) .take(5) .map({ s -> return s + " transformed" }) .forEach({ println "next => " + it })
Observable代码示例
getDataFromNetwork() .skip(10) .take(5) .map({ s -> return s + " transformed" }) .subscribe({ println "onNext => " + it })
参考:http://reactivex.io/intro.html
原文:https://www.cnblogs.com/holoyong/p/9094847.html