我有一个简单的计时器发布器,每10秒触发一次。
Timer
.publish(every: 10, on: .main, in: .common)
.autoconnect()
.map { _ in ... }
.sink(receiveValue: { [weak self] in
...
})
.store(in: &subscriptions)
然而,它第一次发射是在10秒后。我可以设置它触发它的第一个值现在?
或者创建另一个发布者,您可以简单地prepend
到您的计时器发布者:
Timer
.publish(every: 10, on: .main, in: .common)
.autoconnect()
.prepend(Date())
.map { _ in ... }
.sink(receiveValue: { [weak self] in
...
})
.store(in: &subscriptions)
上面的代码具有立即发布一个值的相同效果,并让计时器发布其他值。
我能够实现我想要的,但是我必须添加另一个发布者:
let timer = Timer
.publish(every: 10, on: .main, in: .common)
.autoconnect()
let initial = Just(Date.init())
timer.merge(with: initial)
.map { _ in ... }
.sink(receiveValue: { [weak self] in
...
})
.store(in: &subscriptions)