zoukankan      html  css  js  c++  java
  • ReactiveX-简介

    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 })

    来简单看一下java8的

    java8带来了Stream接口,其拥有的方法比如:filter、skip、map、reduce等

     1 List<Double> origin = Arrays.asList(10.0, 20.0,30.0);
     2 //java8中Collection接口新增了stream方法,它有default逻辑
     3 //return StreamSupport.stream(spliterator(), false);
     4 //可以猜测返回的Stream对象中会存在一个spliterator关联
     5 Stream<Double> stream = origin.stream();
     6 //map操作并不会立即执行,而是会将原Stream包装成一个新的stream,该stream中就含有map逻辑
     7 Stream<Double> mapStream = stream.map(x -> x + x * 0.05);
     8 //reduce属于终端操作,此时就会完成之前的stream操作,最终产生结果。
     9 //可以猜测,Stream内部会有一个数据源(spliterator),还应该通过一个链式结构维护着每一个流的中间操作,在调用终端操作时,会顺着这个链来执行。
    10 Optional<Double> reduce = mapStream.reduce((sum, x) -> sum + x);
    11 double result = reduce.orElse(0.0);

    参考:http://reactivex.io/intro.html

  • 相关阅读:
    sgdisk基本用法
    影响性能的关键部分-ceph的osd journal写
    SSD固态盘应用于Ceph集群的四种典型使用场景
    Ceph在OpenStack中的地位
    Ceph的工作原理及流程
    Ceph系统的层次结构
    SharePoint运行状况分析器有关磁盘空间不足的警告
    Microsoft Exchange本地和Exchange Online可以与第三方服务共享
    SharePoint Server 2016 WEB 网站浏览器支持
    禁用自动映射的 Exchange 邮箱
  • 原文地址:https://www.cnblogs.com/holoyong/p/9094847.html
Copyright © 2011-2022 走看看