假設我有
let stream = PassthroughSubject<String?, Never>()
let repeated = stream.flatMap { value in Timer.publish(every: 3, on: .main, in: .default).autoconnect() }
我想要實作的是使用該功能每 3 秒ifTimer.publish進行一次特定操作,并在發出 nil時停止執行該操作。 value != nilstream
第一部分很容易實作,一旦主題發出 nil,我如何殺死平面映射發布者?
uj5u.com熱心網友回復:
您需要映射,然后 switchToLatest... 像這樣:
let stream = PassthroughSubject<String?, Never>()
let repeated = stream.map { value in
value == nil
? Empty().eraseToAnyPublisher()
: Timer.publish(every: 3, on: .main, in: .default).autoconnect().eraseToAnyPublisher()
}
.switchToLatest()
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/531437.html
標籤:迅速计时器结合
