我有一段代码,我试图转换为rxjava。我需要
这是我写的代码。我是RxJava的新手。
private fun createContactPhoneNumbers(email : Email, phoneNumber: PhoneNumber) {
val single = SingleOnSubscribe<ContactPhoneNumbers> { e: SingleEmitter<ContactPhoneNumbers> ->
val contactPhoneNumber = ContactPhoneNumbers(email)
e.onSuccess(contactPhoneNumber)
}
var contactPhoneNumber : ContactPhoneNumbers? = null
val completableOnSubscribe : CompletableOnSubscribe? = null
Single.create(single)
.subscribeOn(Schedulers.io())
.map { t ->
t.addPhoneNumber(phoneNumber)
contactPhoneNumber = t
val completableOnSubscribe = CompletableOnSubscribe {
t.linkEmailAndTextTogether(phoneNumber)
}
t.doesEmailContactExist(phoneNumber)
}
.flatMapCompletable { t: Boolean ->
if (t) {
completableOnSubscribe
}
Completable.complete()
}
}
答案 0 :(得分:0)
这是我的工作方式:
Single.just(phoneNumber)
.subscribeOn(Schedulers.io())
.map { it -> it.doesPhoneNumberExistInDatabase() }
.doOnError { t: Throwable -> Timber.e(t, t.localizedMessage) }
.map { it ->
if (!it) {
phoneNumber.insertphoneNumber()
}
}
.doOnError { t: Throwable -> Timber.e(t, t.localizedMessage) }
.flatMapCompletable { it->
val params = arrayOf(phoneNumber.number, it.toString())
GetNumberObservable.getNumberCompleteable(this@PopUpContactActivity, *params)
}
.subscribe(object : CompletableObserver {
override fun onComplete() {
//do nothing
}
override fun onSubscribe(d: Disposable) {
compositeDisposable.add(d)
}
override fun onError(e: Throwable) {
Timber.e(e, e.localizedMessage)
}
});