Signal
public struct Signal<Payload>
extension Signal: Combine.Publisher
Signal is a typed interface for observing arbitrary values over time.
Signal delegates observers managing logic to the observeImpl
closure, but provides flexible interface for observing.
Note
Signal
is iOS12-compatible simplified alternative to Combine.Publisher
. It’s behavior is
aligned with Publisher for easier future migration to Combine. If your app supports iOS >= 13.0, use Signal
as Combine.Publisher
.
-
Handles received payloads.
Declaration
Swift
public typealias Handler = (Payload) -> Void
-
A closure that implements observing.
Declaration
Swift
public typealias ObserveImpl = (@escaping Handler) -> AnyCancelable
-
Adds an observer closure that will be called every time signal is triggered.
Note
Analogous to
sink
in Combine.Declaration
Swift
public func observe(_ handler: @escaping Handler) -> AnyCancelable
Parameters
handler
A handler closure.
Return Value
Cancellable object that is used to cancel the subscription. If it is canceled or deinited the subscription will be cancelled immediately.
-
Creates a signal.
Declaration
Swift
public init(observeImpl: @escaping ObserveImpl)
Parameters
observeImpl
A closure that implements observing.
-
Declaration
Swift
public typealias Output = Payload
-
Declaration
Swift
public typealias Failure = Never
-
Declaration
Swift
public func receive<S>(subscriber: S) where Payload == S.Input, S : Subscriber, S.Failure == Never
-
Creates a signal that sends payload once to every subscribed.
Note
The created signal is analogous to the
Combine.Just
.Declaration
Swift
public init(just constant: Payload)
Parameters
just
A payload.
-
Adds an observer closure that will be triggered only once.
Note
Analogous to
prefix(1).sink
in Combine.Declaration
Swift
public func observeNext(_ handler: @escaping Handler) -> AnyCancelable
Parameters
handler
A handler closure.
Return Value
Cancellable object that is used to cancel the subscription. If it is canceled or deinited the subscription will be cancelled immediately.