RealmResultsからObservableへのRxJava2Kotlin SwitchMap

トム

OK、これはRxJavaでの私の最初の質問なので、優しくしてください。

Realmに既存のユーザーを照会し、RealmResultsリストをフロー可能として取得します。次に、新しいユーザーを作成するか、既存のユーザーを返し、JSONに変換します。

これは私が今まで持っているものです。私は少し立ち往生しています。

 fun getUsers(realm: Realm): Flowable<RealmResults<User>> {
     return when (realm.isAutoRefresh) {
         true -> realm.where<User>().findAllAsync().asFlowable().filter(RealmResults<User>::isLoaded)
         false -> Flowable.just(realm.where<User>().findAll())
     }
 }

fun checkNewUserRequired(realm: Realm, results: RealmResults<User>): Observable<String> {
    if (results.isEmpty()) {
       //not complete, I will create a new user here
       return Observable.just("Dummy")
    } else {
       val user = realm.where<User>().findFirst()!!
       val detachedUser = realm.copyFromRealm(user)
       return Observable.just(userToJsonString(realm, detachedUser))
    }
}

val getNewUser= getUsers(realm)
    .take(1)
    .switchMap{ results -> checkNewUserRequired(realm, results) }
    .subscribe{
        //log result
        result : String -> Log.d(TAG, "JSON OUTPUT: $result")
    }

エラーはスイッチマップにあります。私はRxJSの演算子に精通していますが、構文に苦労しています。

どんな助けでも大歓迎です。

オマールマイネグラ

あなたはしようとしている実際には異なるタイプです、。あるタイプから別のタイプに変換する必要があります。switchMapFlowableObservable

あなたの場合の最も簡単な解決策は、背圧関連する問題がないように見えるのでcheckNewUserRequiredを返すように変換することですFlowable

fun checkNewUserRequired(realm: Realm, results: RealmResults<User>): Flowable<String> = Flowable.just(
    if (results.isEmpty()) "Dummy"
    else {
        val user = realm.where<User>().findFirst()!!
        val detachedUser = realm.copyFromRealm(user)
        userToJsonString(realm, detachedUser)
    }
)

既存の関数から関数ObservableFlowable使用して変換することもできtoFlowableますが、その場合はを指定する必要がありますBackpressureStrategy

.switchMap{ results -> checkNewUserRequired(realm, results).toFlowable(BackpressureStrategy.DROP) }

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

switchMap内で同一のObservable

分類Dev

PromisesでのswitchMapの使用

分類Dev

rxjsのflatMap、mergeMap、switchMap、concatMap?

分類Dev

RxJSのマップとswitchMap

分類Dev

rxjsのSwitchMapを理解する

分類Dev

switchMapの奇妙な動作

分類Dev

Angular 2 Observables - Return original observable, instead of switchMap/combineLatest

分類Dev

switchMap, startWith, switchMap?

分類Dev

rxjs: access the result of original observable after it was switchMap'ped

分類Dev

switchMap内でObservableを待つ方法は?

分類Dev

RxJS:文字列の配列のSwitchMap

分類Dev

switchMapの戻り値を無視する

分類Dev

FlatMapとSwitchMapの組み合わせ

分類Dev

RxJava-switchMap()の切り替えが遅いのはなぜですか?

分類Dev

Angular 2 Observables-switchMap / CombineLatestの代わりに、元のobservableを返します

分類Dev

Using RxJS switchMap to only unsubscribe from streams with the same request URL/action payload (redux-observable epics)

分類Dev

switchMap()はどのようにPromiseを解決しますか?

分類Dev

CombineAllを使用してswitchMapとmapを置き換えますか?

分類Dev

switchMapとforkJoinを使用した場合の結果の結合

分類Dev

switchMap内の間隔が値の発行を停止する理由

分類Dev

ボタンRxJava2を押した後にSwitchMapを実行する方法

分類Dev

switchMap使用時のrxjs6エラー処理

分類Dev

catchError後のswitchMapは値を出力しません

分類Dev

switchMapとdebounceTimeは保留中のキャンセル

分類Dev

Angular:switchMapの購読を解除する必要があります

分類Dev

switchMapとmergeMapを使用したRxJSの結果

分類Dev

switchMapでの操作中は状態を保持します

分類Dev

Q:Angular2:タイプ 'Observable <Params>'に 'switchMap'が存在しません

分類Dev

rxjs:switchMap'ped後に元のobservableの結果にアクセスします

Related 関連記事

  1. 1

    switchMap内で同一のObservable

  2. 2

    PromisesでのswitchMapの使用

  3. 3

    rxjsのflatMap、mergeMap、switchMap、concatMap?

  4. 4

    RxJSのマップとswitchMap

  5. 5

    rxjsのSwitchMapを理解する

  6. 6

    switchMapの奇妙な動作

  7. 7

    Angular 2 Observables - Return original observable, instead of switchMap/combineLatest

  8. 8

    switchMap, startWith, switchMap?

  9. 9

    rxjs: access the result of original observable after it was switchMap'ped

  10. 10

    switchMap内でObservableを待つ方法は?

  11. 11

    RxJS:文字列の配列のSwitchMap

  12. 12

    switchMapの戻り値を無視する

  13. 13

    FlatMapとSwitchMapの組み合わせ

  14. 14

    RxJava-switchMap()の切り替えが遅いのはなぜですか?

  15. 15

    Angular 2 Observables-switchMap / CombineLatestの代わりに、元のobservableを返します

  16. 16

    Using RxJS switchMap to only unsubscribe from streams with the same request URL/action payload (redux-observable epics)

  17. 17

    switchMap()はどのようにPromiseを解決しますか?

  18. 18

    CombineAllを使用してswitchMapとmapを置き換えますか?

  19. 19

    switchMapとforkJoinを使用した場合の結果の結合

  20. 20

    switchMap内の間隔が値の発行を停止する理由

  21. 21

    ボタンRxJava2を押した後にSwitchMapを実行する方法

  22. 22

    switchMap使用時のrxjs6エラー処理

  23. 23

    catchError後のswitchMapは値を出力しません

  24. 24

    switchMapとdebounceTimeは保留中のキャンセル

  25. 25

    Angular:switchMapの購読を解除する必要があります

  26. 26

    switchMapとmergeMapを使用したRxJSの結果

  27. 27

    switchMapでの操作中は状態を保持します

  28. 28

    Q:Angular2:タイプ 'Observable <Params>'に 'switchMap'が存在しません

  29. 29

    rxjs:switchMap'ped後に元のobservableの結果にアクセスします

ホットタグ

アーカイブ