流与可观察对象

3
这可能是一个在这里问的愚蠢问题。
我只是想知道JavaScript(或任何其他语言中)Streams和Observables之间的区别。我知道它们都是推送数据模型,即在接收到数据时响应而不是拉取数据。如果有人能提供更多关于这两者之间的区别,那就太好了。
1个回答

3

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

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

另一方面,Observable(和 Publisher)是基于推送的。它们自己启动执行并将信息推送到其订阅者。因此,订阅者必须实现一些包含适当方法的接口,该方法接受下一个值。通常,此方法命名为“update”、“onNext”、“post”、“send”等。
基于推送的方法可能会导致问题,当发布者(生产者)的工作速度快于订阅者(消费者)时。在这种情况下,reactive streams可以帮助消费者控制生产者的速度,从而将传输策略更改为基于拉取的方式。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接