【问题标题】:Streams vs ObservablesStreams vs Observables
【发布时间】:2018-05-01 13:37:19
【问题描述】:

在这里问这个问题可能很愚蠢。

我只是想知道 JavaScript(或任何其他语言)中 Streams 和 Observables 之间的区别。我知道它们都是推送数据模型,即响应接收数据而不是提取数据。如果有人能提供这两者之间的更多差异,那就太好了。

【问题讨论】:

    标签: javascript stream language-agnostic observable


    【解决方案1】:

    流通常是基于拉的。在下面的示例中,foreach()(管道中的最后一个方法)启动管道执行并从源列表中提取数据。

        List<Integer> lst = Arrays.asList(1,2,3);
        lst.stream()
                .filter(k -> k > 1)
                .forEach(k->
                        System.out.println(k)
                );
    

    另一方面,Observables(和Publishers)是基于推送的。他们自己开始执行并将信息推送给他们的订阅者。所以订阅者必须实现一些接口,其中包含接受下一个值的适当方法。通常这个方法被命名为“update”、“onNext”、“post”、“send”等。

    当发布者(生产者)比订阅者(消费者)工作得更快时,基于推送的方法可能会带来麻烦。在这种情况下,reactive streams 可以提供帮助,消费者可以控制生产者的速度,从而将传输策略更改为基于拉取。

    【讨论】:

      猜你喜欢
      • 2015-08-06
      • 2019-03-30
      • 1970-01-01
      • 2017-01-19
      • 2018-01-19
      • 2021-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多