Android 如何在emitter.onNext()处于异步循环时调用emitter.onComplete()
我有一个异步调用,我在其中放置了emitter.onNext()回调侦听器。这个异步调用在for-in中(我知道列表大小)。我想在onNext()中发出最后一个元素时调用onComplete() 由于计数是异步调用,因此不会以正确的方式递增,并且永远不会调用onComplete() 处理这种情况的正确方法是什么?我需要onComplete来显示视图并删除加载/进度条。我找到了解决方案 使用AtomicInteger,如下所示:Android 如何在emitter.onNext()处于异步循环时调用emitter.onComplete(),android,kotlin,reactive-programming,rx-java2,rx-kotlin2,Android,Kotlin,Reactive Programming,Rx Java2,Rx Kotlin2,我有一个异步调用,我在其中放置了emitter.onNext()回调侦听器。这个异步调用在for-in中(我知道列表大小)。我想在onNext()中发出最后一个元素时调用onComplete() 由于计数是异步调用,因此不会以正确的方式递增,并且永远不会调用onComplete() 处理这种情况的正确方法是什么?我需要onComplete来显示视图并删除加载/进度条。我找到了解决方案 使用AtomicInteger,如下所示: var counter = AtomicInteger(0) f
var counter = AtomicInteger(0)
for (anItem in itemList) {
eventsQuery.get()
.addOnCompleteListener { task ->
if (task.isComplete) {
counter.incrementAndGet()
emitter.onNext(myItemFromTask)
if(counter == itemList.size){
emitter.onComplete()
}
}
}
}
如果有人找到更好或更优雅的解决方案,我们将不胜感激
var counter = AtomicInteger(0)
for (anItem in itemList) {
eventsQuery.get()
.addOnCompleteListener { task ->
if (task.isComplete) {
counter.incrementAndGet()
emitter.onNext(myItemFromTask)
if(counter == itemList.size){
emitter.onComplete()
}
}
}
}