Swift Combine: CurrentValueSubject vs PassthroughSubject, commonalities and differences
It is shocking that quite a few developers who use combine do not know the difference between CurrentValueSubject and PassthroughSubject. You didn’t know? Don’t worry, the difference is quite obvious.
What is Subject?
Publisher that you can continuously send new values down.
Subject in Combine Framework is a special kind. It’s a publisher, but you can send data continuously with subject.send()
method. But CurrentValueSubject and PassthroughSubject is a little different.
Commonalities
[1] Subscribe to Subject
[2] Passing down new value with Subject
[3] Sending completion finished with Subject
Difference
The main difference between CurrentValueSubject and PassthroughSubject is that “CurrentValueSubject can hold a value but PassthroughSubject just sends data and never hold a value.”
What do I have to use between CurrentValueSubject and PassthroughSubject?
Most of the cases, you would use CurrentValueSubject and you should use PassthroughSubject for the event things.
Conclusion
- Subject