定时器发布者与初始火现在



我有一个简单的计时器发布器,每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)

相关内容

  • 没有找到相关文章

最新更新