Android fromCallable中的RXjava2方法未被超过
我不熟悉使用rxjava,我正在尝试使用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>() {
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我的坏