Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android fromCallable中的RXjava2方法未被超过_Android_Kotlin_Rx Java2 - Fatal编程技术网

Android fromCallable中的RXjava2方法未被超过

Android fromCallable中的RXjava2方法未被超过,android,kotlin,rx-java2,Android,Kotlin,Rx Java2,我不熟悉使用rxjava,我正在尝试使用rxjava2在后台运行函数,但该方法未被调用。下面给出了我正在使用的代码。请告诉我在后台执行函数的正确方法: Observable.fromCallable<OrderItem>(Callable { saveToDb(existingQty, newOty, product_id) }).doOnSubscribe { object : Observable<OrderItem>() {

我不熟悉使用rxjava,我正在尝试使用rxjava2在后台运行函数,但该方法未被调用。下面给出了我正在使用的代码。请告诉我在后台执行函数的正确方法:

Observable.fromCallable<OrderItem>(Callable {
        saveToDb(existingQty, newOty, product_id)
    }).doOnSubscribe {
        object : Observable<OrderItem>() {
            override fun subscribeActual(emitter: Observer<in OrderItem>?) {
                try {
                    val orderItem = saveToDb(existingQty, newOty, product_id)
                    emitter?.onNext(orderItem)
                    emitter?.onComplete()
                } catch (e: Exception) {
                    emitter?.onError(e)
                }
            }
        }
    }
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread()).doOnSubscribe {
        object : Observer<OrderItem> {
            override fun onComplete() {
            }

            override fun onNext(t: OrderItem) {

            }

            override fun onError(e: Throwable) {
            }

            override fun onSubscribe(d: Disposable) {
            }
        }
    }
Observable.fromCallable(可调用{
saveToDb(现有数量、新日期、产品id)
})doOnSubscribe先生{
对象:可观察(){
覆盖目标实际值(发射器:观察者?){
试一试{
val orderItem=saveToDb(现有数量、新增数量、产品标识)
发射器?.onNext(订单项)
发射器?.onComplete()
}捕获(e:例外){
发射器?.onError(e)
}
}
}
}
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()).doOnSubscribe{
对象:观察员{
覆盖有趣的onComplete(){
}
覆盖下一页(t:OrderItem){
}
覆盖有趣的错误(e:可丢弃){
}
覆盖订阅的乐趣(d:一次性){
}
}
}

DoOnSubscribe
的意思是“当有人订阅它时就去做”。但是您的代码中没有
订阅
。也许你想用
subscribe
代替
doOnSubscribe
doOnSubscribe
的意思是“当有人订阅时做”。但是您的代码中没有
订阅
。也许你想使用
subscribe
而不是
doOnSubscribe
你搞错了<当使用
subscribe()
方法订阅了observable,而您尚未使用
subscribe()
方法订阅observable时,将调用code>doOnSubscribe()
操作符

您已经在
callable
中调用了
saveToDb
方法,那么为什么要在
doOnSubscribe
中调用它呢?这没有道理

您应该编写以下代码:

Observable.fromCallable { saveToDb(existingQty, newOty, product_id) }
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe({ orderItem ->
                    // set values to UI
                }, { e ->
                    // handle exception if any
                }, { 
                    // on complete 
                })

运用你的逻辑。

你错了<当使用
subscribe()
方法订阅了observable,而您尚未使用
subscribe()
方法订阅observable时,将调用code>doOnSubscribe()
操作符

您已经在
callable
中调用了
saveToDb
方法,那么为什么要在
doOnSubscribe
中调用它呢?这没有道理

您应该编写以下代码:

Observable.fromCallable { saveToDb(existingQty, newOty, product_id) }
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe({ orderItem ->
                    // set values to UI
                }, { e ->
                    // handle exception if any
                }, { 
                    // on complete 
                })

用你的逻辑来工作。

谢谢我没有注意到我在叫dosubscribeOn我的坏谢谢我没有注意到我在叫dosubscribeOn我的坏谢谢我没有注意到我在叫dosubscribeOn我的坏谢谢我没有注意到我在叫dosubscribeOn我的坏