结合组合框架使用操作队列
Using operation queues with combine framework
随着combine框架的到来,是否还需要使用操作队列。例如,苹果在 WWDC 应用程序中几乎到处都使用操作队列。那么如果我们使用SwiftUI结合combine(异步编程),是否需要使用Operation Queues?
Combine 只是另一种异步模式,但不会取代操作队列(或调度队列)。正如 GCD 和操作队列在我们的代码库中愉快地共存一样,Combine 也是如此。
GCD 非常擅长 easy-to-write,但仍然是高性能代码,用于将任务分派到各种队列。因此,如果您有可能阻塞主线程的风险,GCD 可以非常轻松地将其分派到后台线程,然后将一些完成块分派回主线程。它还处理后台线程上的计时器、数据同步、highly-optimized 并行代码等。
操作队列非常适合 higher-level 任务(尤其是那些本身是异步的)。您可以处理这些工作,将它们包装在离散的对象中(以便很好地分离职责),并且操作队列可以非常优雅地管理执行、取消和受限并发。
Combine 擅长编写简洁、声明性、可组合的异步事件处理代码。它擅长编写概述的代码,例如,UI 应该如何反映某些事件(网络任务、通知,甚至 UI 更新)。
这显然过于简单化了,但这些只是各种框架的一些优势。当然,这三个框架肯定有重叠,但各有各的位置。
随着combine框架的到来,是否还需要使用操作队列。例如,苹果在 WWDC 应用程序中几乎到处都使用操作队列。那么如果我们使用SwiftUI结合combine(异步编程),是否需要使用Operation Queues?
Combine 只是另一种异步模式,但不会取代操作队列(或调度队列)。正如 GCD 和操作队列在我们的代码库中愉快地共存一样,Combine 也是如此。
GCD 非常擅长 easy-to-write,但仍然是高性能代码,用于将任务分派到各种队列。因此,如果您有可能阻塞主线程的风险,GCD 可以非常轻松地将其分派到后台线程,然后将一些完成块分派回主线程。它还处理后台线程上的计时器、数据同步、highly-optimized 并行代码等。
操作队列非常适合 higher-level 任务(尤其是那些本身是异步的)。您可以处理这些工作,将它们包装在离散的对象中(以便很好地分离职责),并且操作队列可以非常优雅地管理执行、取消和受限并发。
Combine 擅长编写简洁、声明性、可组合的异步事件处理代码。它擅长编写概述的代码,例如,UI 应该如何反映某些事件(网络任务、通知,甚至 UI 更新)。
这显然过于简单化了,但这些只是各种框架的一些优势。当然,这三个框架肯定有重叠,但各有各的位置。