代码之家  ›  专栏  ›  技术社区  ›  boformer

Dart Streams API(带有rxdart)和其他反应库(如RxJava和RxJS)之间的关键区别是什么?

  •  2
  • boformer  · 技术社区  · 6 年前

    现在,我正在尝试将现有的反应式角度应用程序(基于RxJS)的逻辑移植到flatter。我在使用dart streams API时遇到了很多问题,它的行为似乎与其他Rx实现完全不同。

    以下方面的主要区别是什么:

    • 错误和完成事件
    • null / void 价值处理
    • 流可重用性
    • publish , refcount , shareReplay )
    • 订阅管理

    ?

    0 回复  |  直到 6 年前
        1
  •  1
  •   btwiuse    4 年前

    Rx Observables vs Dart Streams

    在许多情况下,流和可观察对象的工作方式是相同的。然而,如果您习惯了标准的Rx可观察性,那么streamapi的一些特性可能会让您感到惊讶。我们在下面列出了一个表格,以帮助人们理解不同之处。

    有关以下情况的更多信息,请阅读 Rx class documentation .

    ┌────────────────────────────────────────────┬─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬───────────────────────────────────────┐
    │                 Situation                  │                                                   Rx Observables                                                    │             Dart Streams              │
    ├────────────────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼───────────────────────────────────────┤
    │ An error is raised                         │ Observable Terminates with Error                                                                                    │ Error is emitted and Stream continues │
    │ Cold Observables                           │ Multiple subscribers can listen to the same cold Observable, each subscription will receive a unique Stream of data │ Single subscriber only                │
    │ Hot Observables                            │ Yes                                                                                                                 │ Yes, known as Broadcast Streams       │
    │ Is {Publish, Behavior, Replay}Subject hot? │ Yes                                                                                                                 │ Yes                                   │
    │ Single/Maybe/Complete ?                    │ Yes                                                                                                                 │ No, uses Dart Future                  │
    │ Support back pressure                      │ Yes                                                                                                                 │ Yes                                   │
    │ Can emit null?                             │ Yes, except RxJava                                                                                                  │ Yes                                   │
    │ Sync by default                            │ Yes                                                                                                                 │ No                                    │
    │ Can pause/resume a subscription*?          │ No                                                                                                                  │ Yes                                   │
    └────────────────────────────────────────────┴─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴───────────────────────────────────────┘