We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
异步编程的本质是响应未来的事件流。
在异步编程中,一个事件及其对应的数据被发布出来,最后被订阅者消化和使用。期间这些事件和数据需要通过一系列操作变形,成为我们最终需要的事件和数据。
Combine中负责发布事件的是Publisher,负责订阅事件的是Subscriber,负责转换事件和数据的是Operator
Publisher的协议声明及其最重要的一个扩展代码:
public protocol Publisher { // publisher生成的值的类型 associatedtype Output // publisher课程产生的错误类型,如果是Never的话,表明这个publisher永远不会生成错误 associatedtype Failure: Error // 订阅者通过调用publisher的subscribe(_:)方法来将二者绑定在一起 func receive<S>(subscriber: S) where S: Subscriber, Self.Failure == S.Failure, Self.Output == S.Input } extension Publisher { // subscribe(_:)的实现会调用receive(_:)以此来将subscriber和publisher进行关联,也就是创建一个订阅关系 public func subscribe<S>(_ subscriber: S) where S: Subscriber, Self.Failure == S.Failure, Self.Output == S.Input }
Subscriber协议声明:
public protocol Subscriber: CustomCombineIdentifierConvertible { // subscriber接收的值类型 associatedtype Input // subscriber接收的错误类型,如果subscriber不接收任何错误的话,那么使用Never associatedtype Failure: Error // publisher通过调用subscriber的receive(subscription:)方法来将subscription传递给subscriber func receive(subscription: Subscription) // publisher调用subscriber的receive(_:)来将它刚刚生成的新值发送给subscriber func receive(_ input: Self.Input) -> Subscribers.Demand // publisher停止发送数据或者因为错误终止时,会调用subscriber的receive(completion:)告诉subscriber func receive(completion: Subscribers.Completion<Self.Failure>) }
将publisher和subscriber链接在一起的是subscription,下面是Subscription的协议:
public protocol Subscription: Cancellable, CustomCombineIdentifierConvertible { // subscriber会调用request(_:)时指定的最大数量或无限制,来表明它是否愿意接受更多的数据 func request(_ demand: Subscribers.Demand) }
The text was updated successfully, but these errors were encountered:
No branches or pull requests
异步编程的本质是响应未来的事件流。
在异步编程中,一个事件及其对应的数据被发布出来,最后被订阅者消化和使用。期间这些事件和数据需要通过一系列操作变形,成为我们最终需要的事件和数据。
Combine中负责发布事件的是Publisher,负责订阅事件的是Subscriber,负责转换事件和数据的是Operator
Publisher的协议声明及其最重要的一个扩展代码:
Subscriber协议声明:
将publisher和subscriber链接在一起的是subscription,下面是Subscription的协议:
The text was updated successfully, but these errors were encountered: