Если вы сразу же испускаете значение «12345», тогда решение тривиально. Просто соедините это наблюдаемое с timer
, и вы получите такое поведение. Тем не менее, я собираюсь предположить, что ваша логика в методе OnSubscribe, которую вы передаете в create
, выполняет некоторую работу и будет выдавать значение после его готовности (т. Е. Запрос сети). В этом случае вам необходимо использовать как операторы flatMap
, так и merge
. Что-то вроде этого должно быть достаточно.
Observable.create(subscriber -> {
subscriber.onNext(12345);
})
.flatMap(value -> Observable.just(value)
.mergeWith(Observable.timer(10, TimeUnits.SECONDS).map(/* define your "random" value here */))
)
.subscribeOn(...)
.observeOn(...)
.subscribe(new Subscriber<Long>(){
@Override
public void onNext(Long aLong) {
//Do Something
}
})
Это займет свою ценность и превратить его в и наблюдаемым, излучающий это значение сразу и запускает таймер на 10 секунд, чтобы излучать что-то другое.
Примечание: Учтите, что это будет иметь каждую деталь ваш наблюдаемые и испускающее создать этот отложенный второй ответ для каждого из них. Поэтому, если вы планируете излучать несколько значений из вашего наблюдаемого источника, вам нужно учитывать это.
Вы можете поместить эту логику в метод подписчика -> {}. Таймер или что-то может сделать это. Это вариант jus tmy, но я не думаю, что RxJava предназначен для обработки сложных случаев из коробки. Это хорошая идея написать свою логику, как испускать ваши данные в чистой Java, когда это сложный случай. –
Разве нет оператора или что-то в этом роде? – Simar
В этом случае швы будут очень конкретными, но, возможно, у кого-то есть хорошая идея в SO –