7

我对此进行了研究,并且我知道 RXJava 正在使用可观察模式,而 Bolts 则依赖于执行程序。什么框架适合处理需要按顺序完成的任务?

我听说过使用单执行器、队列、链接异步任务和这两个框架。我看到更多人使用 bolts 与 rxjava,但很想知道人们在两者之间的经历。

谢谢!

4

3 回答 3

19

我在不同的项目中都使用过,并完成了从 Bolts 到 RxJava 的迁移。你的问题的简单答案

什么框架适合处理需要按顺序完成的任务?

您是否可以轻松地使用任一框架来执行此操作。他们两个:

  • 允许一个接一个地链接任务
  • 为每个任务指定执行者等
  • 允许在方便的时候捕获和处理错误

然而,这就是 Bolts 功能几乎结束的地方,而 RxJava 只是继续提供。RxJava 的真正强大之处在于它的运算符,其中包括允许您转换、组合和过滤数据。

这两个框架的学习曲线都很陡峭,RxJava 更陡峭……但它的功能要强大得多。

顺便说一句,这两个库的方法计数是

RxJava - 4605
Bolts  - 479
于 2016-07-18T21:19:08.650 回答
9

Jahnold 给出了一个很好的概述,我只想添加更多信息:

首先,Bolts 和 RxJava 都是 Microsoft 异步编程模型的 Java 实现:Bolts = 任务并行化库和 RxJava = Reactive Extensions。它们也都允许链接和线程切换非常容易(背景<->主线程)。

将 Bolts/TPL 与 RxJava/Rx 进行比较的最佳方式是,Bolts 用于异步单个值(承诺),而 RxJava 用于异步值列表(流)。

  • 因此,Bolts 非常适合返回单个值的后台工作,例如一般网络请求、从磁盘读取文件等
  • RxJava 适用于返回多个值的事情,例如订阅 GPS 坐标、onClick 事件等。

所以为了更好地回答你的问题:

什么框架适合处理需要按顺序完成的任务?

我不得不问另一个:你打算让你的工作成为单一结果还是多重结果?

于 2016-07-19T18:36:17.973 回答
1

这两个库解决了两个不同的问题。

螺栓

Bolts 通过透明地将代码推送到后台线程来简化异步编程。Bolts 还花费了大量精力来尝试减少难看的代码嵌套,这种嵌套会产生类似金字塔的嵌套格式。

因此,如果您特别希望处理异步(多线程)问题,Bolts 是更强大的解决方案之一。Bolts 在缓解代码嵌套和回调样板方面也很有效,并且可能是试图缓解回调问题的一个很好的解决方案。

RxJava

RxJava 专门设计用于支持反应式编程范式。反应式编程是 Java 中命令式编程的替代方案。您可能出于各种原因选择转向反应式编程范例 - 其中有很多。如果您想将代码迁移到响应式编程模型,或者您想在新建项目中使用响应式,请考虑使用 RxJava——Java 世界中事实上的响应式标准。

Reactive 还解决了异步编程问题,并通过泛型减少了回调样板。但它不应该仅仅用于解决这些问题。例如,Bolts 解决嵌套金字塔代码结构的能力使其成为异步编程更可行的解决方案。另一方面,如果你通过 RxJava 使用响应式,异步问题已经解决,所以引入 Bolts 没有意义。

于 2017-12-10T15:33:30.630 回答