Добавить элементы после создания 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
Ответы
Ответ 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'