Combine和RxSwift有什么区别?



我想知道是否有一个优秀的文档来显示组合和RxSwift之间的差异?

快速学习Combine对我有好处,因为我已经对RxSwift有了很好的了解

Đức Bùi发表了一篇很好的文章,详细介绍了表面水平的差异。在这个回答中,我将介绍我发现的其他一些差异…

ACancellable和ADisposable的差异比文章所建议的要大得多。前者用于保持订阅活动,而后者仅在想要显式终止订阅时才需要。所以disposable可以被忽略,而Cancellables却不能。

Combine中的share(replay: x)运算符相当于RxSwift的.share(replay: x, scope: .forever),没有共享.whileConnected的概念。这意味着共享的发布者不能像共享的可观察对象那样重新启动。

其他问题:

  • 联合收割机的背压处理是一个额外的复杂你永远不需要,但无论如何必须处理。
  • Combine中的每个操作符返回不同的类型,其中大多数都是包装它们的源类型,所以它们变得非常复杂快。eraseToAnyPublisher()操作符提供了一些缓解,但是必须不断使用它本身就是一种折磨。
  • 缺乏UIKit支持是很困难的。最好使用SwiftUI。作为因此,这不是一个简单的从一个API到另一个API的转换,而是一个复杂的过程完全重写。
  • 你很快就会发现自己在寻找第三方库以便填满合并后留下的洞。如果你要转换为了避免第三方库而进行组合,您已经击败了目的。

至于利益?我只找到了一个。组合主题是线程安全的,而RxSwift主题不是。在RxSwift中,你很少需要subject,而在Combine中,你总是需要它们。

相关内容

  • 没有找到相关文章

最新更新