Streams vs Observables

时间:2017-11-17 17:37:58

标签: javascript stream language-agnostic observable

这可能是一个愚蠢的问题。

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

1 个答案:

答案 0 :(得分:0)

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

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

另一方面,Observable(和Publisher)是基于推送的。他们自己开始执行并将信息推送到其订户。因此,订户必须实现一些接口,该接口包含接受下一个值的适当方法。通常,此方法名为“更新”,“ onNext”,“发布”,“发送”等。

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