2017-05-29 21 views
0

.connect().auth()の結果を組み合わせた次の作業コードがあります。フラットマップと以前のシングルを組み合わせる方法

auth()は、connect()の結果によって異なります。合計で、APIと認証結果をConnectionオブジェクトに結合する必要があります。

fun getConnection(token: String): Single<Connection> { 
    return connect() 
      .map { Api(it) } 
      .flatMap { api -> api.auth(token) 
           .map { Connection(api, it) } 
        }  
} 

IMHOこのコードは嫌です。 rxjava2で内部マッピングなしでConnectionを取得するための最適なソリューションがあるかもしれませんか?

+0

私はそれがシングルを返すことがわかります。だから私はすべてのメソッドが 'Single'を返すと思います。コードは悪臭ではありません。 –

+1

lambdaパラメータの名前を 'it'ではなく明示的に指定すると、改善することができます。ラムダがネストされているか型が明白でないときに 'it'を使うことは勧められません。 – voddan

答えて

0

実際にはmap()を使用する必要はありません。 flatmap()Apiオブジェクトを作成してください。

fun getConnection(token: String): Single<Connection> { 
    return connect().flatMap { conn -> 
    val api = Api(conn) 
    api.auth(token).map { Connection(api, it) } 
    }  
} 
関連する問題