问题 在创建rx Observable后添加元素


当我想在创建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

11473
2017-11-26 23:33


起源



答案:


你不能 - 不是你创造的可观察物。你需要的是一个 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'   

11
2017-11-28 20:52