2013-11-26 13 views
11

Come posso implementare uno scenario quando voglio aggiungere elementi dopo la creazione dell'Osservable, può essere fatto del tutto? Nel pattern Observer vorrei solo sparare un evento o così. Hai qualche idea?Aggiungere elementi dopo la creazione di rx Osservabile

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 

risposta

11

Non puoi - non per l'osservabile che hai creato. Quello che ti serve è un Subject, con il quale puoi emettere valori. Subject è fondamentalmente sia un Observable sia uno Observer.

Ad esempio:

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' 
Problemi correlati