如何创建无限的时间间隔Observable每隔一段时间就会发射一个新的Object?
我想创建一个Observable,它会每秒发射一个新对象。 所以现在我只是用一个间隔Observable压缩一个Observable,它从列表中发出有限数量的对象。如何创建无限的时间间隔Observable每隔一段时间就会发射一个新的Object?
val list1 = mutableListOf<SomeClass1>(
SomeClass1("1", 1), SomeClass1("2", 2), SomeClass1("3", 3),
SomeClass1("4", 4), SomeClass1("5", 5), SomeClass1("6", 6),
SomeClass1("7", 7), SomeClass1("8", 8), SomeClass1("9", 9)
)
val someClass1Observable = Observable
.fromIterable(list1)
.zipWith(Observable.interval(2, TimeUnit.SECONDS),
BiFunction { item: SomeClass1, _: Long -> item })
因此,如何真正让这无限的,在每2秒都有将emiited类SomeClass1的新对象与某些参数的方法吗?
这里是我的问题的答案,满足我:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var counter = 0
val periodicSomeClass1 = Observable.interval(1, TimeUnit.SECONDS)
.flatMap(
{
counter++
Observable.just(SomeClass1("$counter", counter))
}
)
periodicSomeClass1.subscribe { t: SomeClass1 -> Log.v("periodicSomeClass1", t.toString()) }
}
好的,在这种情况下,我会改变答案:'Observable.interval(1,TimeUnit.SECONDS).map({SomeClass(“$ it “,it)})'。这是因为间隔发出连续的整数,从0开始 - 你不需要任何外部可变状态。而且,只有'just'的flatMap'实际上是不需要的,在这种情况下只需使用'map'即可。 –
@ david.mihola谢谢,你认为这导致与我的其他问题在这里的问题:https://*.com/questions/47368711/why-i-have-undesired-log-output-when-merging-2-可观察到的一体? – Konrad
你如何确定'n'th的'SomeClass1'对象的实际值?它仅取决于'n'的价值,我。即在流中的位置?它取决于之前发射的物品吗? –
@ david.mihola检查我的答案,如果你有兴趣我的意图是什么 – Konrad