Я полагаю, что это все еще экспериментально, но вы можете использовать TickerChannel для получения значений каждые X миллисекунд:
val tickerChannel = ticker(delayMillis = 60_000, initialDelayMillis = 0)
repeat(10) {
tickerChannel.receive()
val currentTime = LocalDateTime.now()
println(currentTime)
}
Если вам нужно продолжать выполнять свою работу, пока ваша "подписка "что-то делает для каждого" тика ", вы можете launch
фоновую сопрограмму, которая будет читать с этого канала и делать то, что вы хотите:
val tickerChannel = ticker(delayMillis = 60_000, initialDelayMillis = 0)
launch {
for (event in tickerChannel) { // event is of type Unit, so we don't really care about it
val currentTime = LocalDateTime.now()
println(currentTime)
}
}
// when you're done with the ticker and don't want more events
tickerChannel.cancel()