Tag: rx java2

Kotlin&Vertx&Mongo:如何管理异步CRUDfunction?

朋友们! 我是Vertx和Mongo的绿手,现在我面临一个棘手的问题。 以下是代码段。 这里是Mongo客户端的包装类。 // MongoDatabase.kt import io.vertx.core.json.JsonObject import io.vertx.core.logging.LoggerFactory import io.vertx.kotlin.core.json.JsonObject import io.vertx.rxjava.core.Vertx import io.vertx.rxjava.ext.mongo.MongoClient import kotlin.reflect.KClass import kotlin.reflect.full.declaredFunctions class MongoDatabase (val tClass: KClass, vertx: Vertx, config: JsonObject, databaseName: String) : Database { private val mongo = MongoClient.createShared(vertx, config, databaseName) private val logger = LoggerFactory.getLogger(MongoDatabase::class.java) // I use a self-made annotation to record the […]

TestScheduler不起作用(Kotlin + RxJava2 + mockito)

我想写一个unit testing,将validation下面的callInit方法。 但是,我有空指针exception行保存subscribe( 。我的问题是我如何validation在下面的方法中的下一个和onerror条件? override fun callInit() { val requestInit = RequestInit(os = “android”, osVersion = deviceUtil.osVersion(), appVersion = deviceUtil.apiVersion()) compositeDisposable.add( interactor.getInit(requestInit) .subscribe( { view.hideProgress() this.commercialLink = it.commercialLink view.updateScreen() }, { error -> view.onError(error) } ) ) } 测试方法: @Test fun should_update_commerciallink_AND_updateScreen_when_callInit() { val request = RequestInit(“android”, “version”, “osversion”) val responseInit = ResponseInit(false, false, “updatelink”, […]

RxJava和Kotlin的花括号和正常括号有什么区别?

我不明白使用RxJava时,大括号和Kotlin中的正常括号之间的真正区别。 例如,我有以下代码,它按预期工作: someMethodThatReturnsCompletable() .andThen(anotherMethodThatReturnsACompletable()) .subscribe(…) 但以下不起作用: someMethodThatReturnsCompletable() .andThen { anotherMethodThatReturnsACompletable() } .subscribe(…) 用大括号注意链中的andThen()部分的区别。 我不明白这两者之间的区别是什么。 我已经看了一些文章,但不幸的是,我仍然很难理解这种微妙的差异。

RxJava和Kotlin数据类copy()操作中的线程切换成本

我的问题是关于操作的成本,特别是Kotlin 数据类 copy()操作和RxJava observeOn()线程切换的成本。 我有一个系统产生的事件,让我们说Schedulers.mainThread 。 事件是Kotlin 数据类 。 接下来是业务逻辑,最后链通过copy()操作产生新的数据类 。 所有结果都必须在Schedulers.mainThread 。 所以,一条连锁店会是这样的: eventSource() //Events are produced on Schedulers.mainThread .observeOn(Schedulers.computation) .map { event -> other business logic event.copy(…) } .observeOn(Schedulers.mainThread) .subscribe(eventConsumer) 因此,如果事件类有15个字段,那么这个问题是值得通过observeOn来切换调度observeOn ,例如copy() 。 应该提到的是, Schedulers.mainThread是用于渲染UI的线程,最好是空置的。

Kotlin和RxJavatypes推断失败

我试图执行重试当我的Observable时,会出现一个时间,但我有奇怪的错误下划线在IDE Android Studio 3.0 这里是代码: rxRssiRepository.onRssiUpdate() //returns Observable .timeout(10, TimeUnit.MILLISECONDS) .retryWhen { t: Observable -> t.flatMap { error: Throwable -> if (error is TimeoutException) { stopLocationUpdates() Log.v(“TIMEOUT”, “TIMEOUT RSSI EVENTS”) Observable.just(Observable.empty()) } else { Observable.error(error) } } } .concatMap { t: RssiEvent -> appendRssiEvent(t) } .publish() IDE强调了.flatMap运算符的红色,并说: types推断失败:没有足够的信息来推断参数R in fun flatMap(mapper:((t:Throwable)→ObservableSource)!):Observable! 请明确指定。 “if”运算符也是如此: 控制流expression式的types推断失败。 请明确指定其types […]

Kotlin使用RxJava2来观察观察者

Android Studio 3.0 Beta2 我创建了两个方法,一个创建观察者,另一个创建订阅者。 不过,我有一个问题试图让订阅者订阅观察。 在Java中这将工作,我正在努力让它在Kotlin工作。 在我的onCreate(..)方法,我试图设置这个。 这是正确的方法来做到这一点? class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) /* CANNOT SET SUBSCRIBER TO SUBCRIBE TO THE OBSERVABLE */ createStringObservable().subscribe(createStringSubscriber()) } fun createStringObservable(): Observable { val myObservable: Observable = Observable.create { subscriber -> subscriber.onNext(“Hello, World!”) subscriber.onComplete() } return myObservable } fun createStringSubscriber(): Subscriber […]

Rx和Kotlintypes推断中的generics函数引用失败

我在Kotlin写了一个方法: fun fetchDepositSession(): Completable = Observable.fromIterable(session.accounts) .map(DepositSession::DepositAccount) .toList() .doOnSuccess(depositSession::depositAccounts::set) .flatMapObservable(Observable::fromIterable) .map(DepositSession.DepositAccount::account::get) .toCompletable() 该行.flatMapObservable(Observable::fromIterable)正在导致一个错误:

在使用Flowable中的方法引用时,Kotlin无法推断types

我在Java中有这样的代码: Flowable.just(1,2,3) .flatMap(Flowable::just); 和这个代码在Kotlin: Flowable.just(1,2,3) .flatMap(Flowable::just) 虽然Java代码编译得很好,但是Kotlin编译器却说:“错误:(47,30)Kotlin:对类Flowable:一个types参数期望在io.reactivex中定义” 但是这编译罚款: Flowable.just(1,2,3) .flatMap { Flowable.just(it) } 我在做什么错误或Kotlin如何自动推断Flowable的types?

RxJava和使用Kotlin翻新

如何在Kotlin中使用RxJava和Retrofit为API调用创建generics类?

Android体系结构组件房间ViewModel CompleteableFormAction

所以我想我会尝试一个小方面的项目。 我跟随了Florina Muntenescu的示例项目: android-architecture-components 我特别注意类: UserActivity.kt , UserViewModel.kt , UserDao.kt UserViewModel#updateUserName()返回一个Completable ,并且必须订阅返回onComplete或onError 当我尝试把viewModel.updateUserName(userName)等价物放入一个RxBindings链。 如果我通常订阅我通过了Disposable! 在最后的.subscribe其值"DISPOSED" 问题是这不会发出一个错误 ,因此永远不知道是否有问题 我怎么能适应下面的代码,以便最终的.subscribe会返回正确的事件? RxTextView.textChanges(editText) .debounce(250L, TimeUnit.MILLISECONDS, schedulers.main) .subscribeOn(schedulers.main) .observeOn(schedulers.disk) .map({ name -> viewModel.updateUserName(name) .subscribe( { Timber.d(“Success”) }, { error -> Timber.d(error, “something went wrong”)) }) }) .observeOn(schedulers.main) .subscribe( { Timber.d("name changed $it}") }, { Timber.e(it, "name error") }) 提前致谢 M.