我想学习如何使用RX的.delay()
和.timer()
。
fun main(args: Array<String>) {
showTime()
.delay(2, TimeUnit.SECONDS)
.andThen(showTime())
.subscribe()
}
private fun showTime(): Completable =
Completable.fromAction {
val time = Instant.ofEpochMilli(System.currentTimeMillis()).atZone(ZoneId.systemDefault()).toLocalTime()
println(time)
}
我希望以上代码在两次打印之间间隔2秒打印两次。但是,它只能打印一次。
我也尝试使用.timer()
,但也没有用。
showTime()
.andThen(Completable.timer(2, TimeUnit.SECONDS))
.andThen(showTime())
.subscribe()
有人可以在RX中使用.delay()
和.timer()
时,在2秒之间向我展示两次正确的打印时间方法吗?
答案 0 :(得分:1)
尝试使用self
-它会发出带有延迟的物品。在下面的示例中,它每2秒钟(class LocalGuiMaker(makeGui):
def start(self):
self.menuBar = [
('File', 0,
[('Open', 0, lambda: 0), ('Quit', 0, sys.exit)]),
('Edit', 0,
[('Add', 0, lambda: 0), ('Remove', 0, lambda: 0)]),
('Help', 0,
[('About', 0, lambda: 0), ('Optins', 0, lambda: 0)])
]
self.toolBar = [
('Edit', self.update, {'side': 'left'}),
('Add', lambda: 0, {'side': 'left'}),
('Remove', lambda: 0, {'side': 'left'})
]
self.toolbarColor = '#3C3F41'
LocalGuiMaker(root).mainloop()
)滴答两次(Observable.interval
),然后停止。
interval
如果您仍然只想使用take(2)
和Observable
.interval(2, TimeUnit.SECONDS)
.take(2)
.subscribe();
,则可以执行以下操作。
实际上,我认为您不应该在这里使用timer
,因为当您在第一个delay
之后调用第二个delay
时,它仍然会在给定的时间延迟发射。
timer