В следующем методе, как передать результат первого сингла во второй сингл?
Как написано сейчас, когда он возвращается, somethingId
пусто.Если я изменю значение в возвращенном Single.just(somethingId)
на что-то отличное от пустой строки, оно вернет это значение.
Интересно то, что если я остановлю точку в методе, она остановится на строке 7, прежде чем она перейдет на строку5 и 6.
Документация для andThen
в строке 7 гласит:
Возвращает Single, который подпишется на этот Completable и, как только он будет завершен, подпишется на{@code next} SingleSource.
Почему он выполняется в таком порядке и / или есть ли лучший способ сделать это?
1 override fun downloadSomething(): Single<String> {
2 var somethingId = ""
3 return remoteDataSource.downloadSomething() // this is a Single
4 .flatMapCompletable { something ->
5 somethingId = something.id
6 saveSomething(something) // this is a Completable
7 }.andThen(Single.just(somethingId))
8 }
Единственное, что нужноВ этот момент я могу подумать, что нужно вернуть Single для метода saveSomething()
в строке 6 (который работает).Однако затем я изменяю сигнатуру этого метода, чтобы использовать его в этом конкретном методе, который кажется неправильным.Конечно, есть способ заставить это работать без этого?