首先Combine是apple的一个framework
通过联合 event-processing operators 来客制化异步事件的处理
Combine 提供一种宣言式的Swift Api来处理伴随时间变化的值,这些值能代表许多种类的异步事件。Combine 声明 publishers 去暴露那些随着时间改变的值,subscribers去接收这些从publishers发布的值
- publisher 协议声明了一种能传递一系列随着时间变化的值的类型,publisher让这些操作根据从上游publisher那里获得的值来采取行动,然后再重新发布它们。
- 在publisher链的末尾,订阅者在接受元素时对其进行操作。仅当订阅者明确要求时,publisher才会发布值。这样一来,您的订阅者代码就可以控制从与其连接的publisher那里接收事件的速度。
多个基础类型通过publisher公开其功能,包括Timer
NotificationCenter
和 URLSession
。Combine还为符合键值观察的任何属性提供内置publisher。
你可以合并多个publisher的输出,并协调他们的交互。例如,你可以订阅text field的发布者的更新,然后使用text来执行URL请求。然后,你可以使用其他publisher来处理响应,并使用他们来更新您的应用。
通过采用Combine,您可以通过集中事件处理代码并消除麻烦的技术(像嵌套闭包和基于约定的回调)来使代码更易于阅读和维护。