Combine详解

  • Combine详解

Combine框架提供了一个声明性的Swift API,用于随时间处理值。这些值可以表示多种异步事件。 Combine合声明publishers以公开可随时间变化的值,以及subscribers从publishers接收这些值。

Publisher协议声明了一种可以随时间传递一系列值的类型。publishers可让运营商根据从上游发布商处收到的值采取行动并重新发布。

在publishers链的末尾,Subscriber在接收元素时对其进行操作。

publishers仅在subscribers明确请求时才会发出值。这使您的subscribers代码能够控制从其连接的publishers接收事件的速度。

一些Foundation类型通过publishers公开其功能,包括Timer,NotificationCenter和URLSession。

Combine还为符合Key-Value Observing的任何属性提供内置publishers。

可以组合多个publishers的输出并协调他们的交互。例如,您可以从文本字段的publisher订阅更新,并使用该文本执行URL请求。然后,可以使用其他publishers处理回复并使用它们来更新应用。

通过采用Combine,可以通过集中事件处理代码并消除麻烦的闭包和基于约定的回调等麻烦的技术,使代码更易于阅读和维护。

  1. Essentials

Receiving and Handling Events with Combine 从异步源自定义和接收事件。

  1. Publishers

protocol Publisher

声明类型可以随时间传输一系列值。

enum Publishers

用作发布者的类型的命名空间。

struct AnyPublisher

类型擦除发布者。

protocol ConnectablePublisher

publisher,提供连接和取消发布的明确方法。

struct Published

发布标有属性的属性的类型。

protocol Cancellable

指示活动或操作支持取消的协议。

class AnyCancellable

一种类型擦除可取消对象,在取消时执行提供的闭包。

  1. Convenience Publishers

class Future

最终生成单个值然后完成或失败的发布者。

struct Just

发布者只向每个订阅者发出一次输出,然后完成。 struct Deferred

在运行提供的闭包之前等待订阅的发布者,以便为新订阅者创建发布者。 struct Empty

从不发布任何值的发布者,并可选择立即完成。 struct Fail

发布者,它会立即以指定的错误终止。 struct Record

允许记录一系列输入和完成的发布者,以便稍后回放给每个订阅者。

  1. Subscribers

protocol Subscriber

声明可以从发布者接收输入的类型的协议。 enum Subscribers

用作订阅者的类型的命名空间。 struct AnySubscriber

类型擦除用户。 protocol Subscription

表示订户与发布者的连接的协议。 enum Subscriptions

与订阅相关的符号的命名空间。

  1. Subjects

protocol Subject

向外部调用者公开方法以发布元素的发布者。 class CurrentValueSubject

包含单个值的主题,并在值更改时发布新元素。 class PassthroughSubject

向下游订户广播元素的主题。

  1. Schedulers

protocol Scheduler

定义何时以及如何执行闭包的协议。 struct ImmediateScheduler

用于执行同步动作的调度程序。 protocol SchedulerTimeIntervalConvertible

一种协议,为调度程序提供相对时间的表达式。

  1. Observable Objects

protocol ObservableObject

一种对象,其中发布者在对象发生更改之前发出。 class ObservableObjectPublisher

从可观察对象发布更改的发布者。

  1. Encoders and Decoders

protocol TopLevelEncoder

一种定义编码方法的类型。 protocol TopLevelDecoder

定义解码方法的类型。

  1. Debugging Identifiers

protocol CustomCombineIdentifierConvertible

用于唯一标识发布者流的协议。 struct CombineIdentifier

用于标识发布者流的唯一标识符。

原文地址:https://www.cnblogs.com/liuxiaokun/p/12684336.html