Подтвердить что ты не робот

Добавить элементы после создания rx Observable

Как я могу реализовать сценарий, когда хочу добавить элементы после создания Observable, может ли это вообще быть сделано? В шаблоне Observer я просто запускаю событие или около того. У вас есть идеи?

import rx.lang.scala._

val target  = Observable(1,2,3,4)

val subscription1 = target subscribe(println(_))
val subscription2 = target subscribe(println(_))


def addToObservable(toAdd: Int, target: Observable[Int]): Observable[Int] = {
  target/*.addElementAndNotifyObservers(toAdd)*/
}

addToObservable(4, target) //should print 4 on all subscriptions
addToObservable(6, target) //should print 6 on all subscriptions
4b9b3361

Ответ 1

Вы не можете - не к наблюдаемому, который вы создали. Вам нужно Subject, с помощью которого вы можете испускать значения. Subject - это в основном как Observable, так и Observer.

Например:

import rx.lang.scala._
import rx.lang.scala.subjects._

val subject = ReplaySubject[Int]()             
val initial = Observable(1,2,3,4)     
val target = initial ++ subject   // concat the observables

val subscription1 = target subscribe(println(_))
val subscription2 = target subscribe(println(_))

subject.onNext(4)    // emit '4'
subject.onNext(6)    // emit '6'