你可以在不改变的情况下得到同样的结果
saveSomething
方法签名,如果您避免
flatMapCompletable
共操作:
1 override fun downloadSomething(): Single<String> {
2 return remoteDataSource.downloadSomething() // this is a Single
3 .flatMap { something ->
4 saveSomething(something).andThen(Single.just(something.id))
5 }
6 }
或:
1 override fun downloadSomething(): Single<String> {
2 return remoteDataSource.downloadSomething() // this is a Single
3 .flatMap { something ->
4 saveSomething(something).toSingleDefault(something.id)
5 }
6 }
你现在的问题是
Single.just(somethingId)
作为rxjava管道创建的一部分执行,因此,它在下载完成之前发生,因此
somethingId
仍然是空字符串。