【问题标题】:RxJava Call Method When Loop will finish iteration循环完成迭代时的 RxJava 调用方法
【发布时间】:2018-10-10 11:58:32
【问题描述】:

我有问题。解决方案可能很简单,但我的头太热了......

我想在 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)
                })
    })
}
  1. 建议的解决方案

        Observable.merge(workers.map {
        deleteOldWorkers(it.event_planner_id!!)
    })
    

【问题讨论】:

    标签: android kotlin rx-java rx-android


    【解决方案1】:

    Observable.merge(workers.map { deleteOldWorkers(it.event_planner_id!!) }).doOnComplete() 也许?

    【讨论】:

    • 编译错误与 'deleteOldWorkers()' 返回类型有关。也许您需要明确定义它。在我这边,表达式 'val workers = ArrayList()' 和 'Observable.merge(workers.map { Observable.just(it) } )' 可以正常编译。
    猜你喜欢
    • 1970-01-01
    • 2015-07-02
    • 1970-01-01
    • 2012-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多