2013-11-26 23 views
11

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

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 

ответ

11

Вы не можете - не наблюдаемый, который вы создали. Вам нужен 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'