RxJava Call Method When Loop 将完成迭代
RxJava Call Method When Loop will finish iteration
我有问题。解决方案很简单,但我的头太热了...
我想在 forEach 循环完成后调用一次方法。
感谢任何示例解决方案!
override fun saveWorkers(workers: ArrayList<Worker>): Single<Boolean> {
LogMgr.d(TAG, "saveWorkers() : $workers")
// remove old workers for current Event Planner and save new
workers.forEach {
deleteOldWorkers(it.event_planner_id!!)
.subscribeOn(getSubscriptionSchedulerForSave())
.subscribe({ status ->
}, { error ->
})
}
return Single.create({ emitter ->
RXModelAdapter.from(Worker::class.java)
.saveAll(workers)
.subscribeOn(getSubscriptionSchedulerForSave())
.subscribe({
LogMgr.d(TAG, "saveWorkers() onComplete")
emitter.onSuccess(true)
}, {
LogMgr.e(TAG, "saveWorkers() onError ", it)
emitter.onError(it)
})
})
}
提议的解决方案
Observable.merge(workers.map {
deleteOldWorkers(it.event_planner_id!!)
})
Observable.merge(workers.map { deleteOldWorkers(it.event_planner_id!!) }).doOnComplete() 也许?
我有问题。解决方案很简单,但我的头太热了...
我想在 forEach 循环完成后调用一次方法。
感谢任何示例解决方案!
override fun saveWorkers(workers: ArrayList<Worker>): Single<Boolean> {
LogMgr.d(TAG, "saveWorkers() : $workers")
// remove old workers for current Event Planner and save new
workers.forEach {
deleteOldWorkers(it.event_planner_id!!)
.subscribeOn(getSubscriptionSchedulerForSave())
.subscribe({ status ->
}, { error ->
})
}
return Single.create({ emitter ->
RXModelAdapter.from(Worker::class.java)
.saveAll(workers)
.subscribeOn(getSubscriptionSchedulerForSave())
.subscribe({
LogMgr.d(TAG, "saveWorkers() onComplete")
emitter.onSuccess(true)
}, {
LogMgr.e(TAG, "saveWorkers() onError ", it)
emitter.onError(it)
})
})
}
提议的解决方案
Observable.merge(workers.map { deleteOldWorkers(it.event_planner_id!!) })
Observable.merge(workers.map { deleteOldWorkers(it.event_planner_id!!) }).doOnComplete() 也许?