I've found a situation in which PassthroughSubject
delivers its values in the wrong order. Is this is working as designed or a bug?
let subject = PassthroughSubject<String, Never>()
let loggedSubject = subject.print()
let printer = loggedSubject.sink {
print("printer: \($0)")
if $0 == "Manual message" {
subject.send("Automatic message")
}
}
let printer2 = loggedSubject.sink {
print("printer2: \($0)")
}
subject.send("Manual message")
When this code is run it prints:
receive subscription: (PassthroughSubject)
request unlimited
receive subscription: (PassthroughSubject)
request unlimited
receive value: (Manual message)
printer: Manual message
receive value: (Automatic message)
printer: Automatic message
receive value: (Automatic message)
printer2: Automatic message
receive value: (Manual message)
printer2: Manual message
It makes sense to me that printer2
receives all its values after printer
. However, I was surprised that printer2
receives its values in the wrong order.