Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
`CombineExt.Publisher.withLatestFrom`’s handling of finished events.
import CombineExt
// Scenario one: `withLatestFrom`’s argument finishes first.
let first = PassthroughSubject<Int, Never>()
let second = PassthroughSubject<String, Never>()
var cancellables = Set<AnyCancellable>()
first
.withLatestFrom(second) // CombineExt’s implementation
.sink(receiveCompletion: { print($0) }, receiveValue: { print($0) })
.store(in: &cancellables)
first.send(1)
second.send("one")
first.send(2)
second.send("two")
second.send(completion: .finished)
// Outputs:
//
// ```
// one
// ```
// Scenario two: Upstream finishes first.
//
first.send(1)
second.send("one")
first.send(2)
second.send("two")
first.send(completion: .finished) // `first` is subbed in for `second` here.
// Outputs:
//
// ```
// one
// finished
// ```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment