2013-11-26 11 views
11

Wie kann ich ein Szenario implementieren, wenn ich Elemente nach der Erstellung der Observable hinzufügen möchte, kann es überhaupt getan werden? Im Beobachtermuster würde ich nur Ereignis oder so auslösen. Hast du Ideen?Elemente nach der Erstellung von Rx hinzufügen 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 

Antwort

11

Sie können nicht - nicht zu der beobachtbaren Sie erstellt. Was Sie brauchen, ist ein Subject, mit dem Sie Werte ausgeben können. Subject ist im Grunde sowohl eine Observable als auch eine Observer.

Zum Beispiel:

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' 
Verwandte Themen