Ich versuche verwenden multi Observer
abonnieren Sie eine Observable
welche onNext
in einer Schleife aufgetreten ist.Es scheint nicht für jeden Beobachter funktionieren.RxScala Subscribe mit multi Observer nur Ereignis an erster Stelle senden
import rx.lang.scala.Observable
object SubscribeMultiEvent extends App{
val obv = Observable.apply[String]{ s =>
def printForever: Unit = {
s.onNext("hi~")
Thread.sleep(1000)
printForever
}
printForever
}
obv.subscribe(s => println(s"first observer - $s"))
obv.subscribe(s => println(s"second observer - $s"))
Thread.currentThread().join()
}
Antwort nur für den ersten Beobachter
first observer - hi~
first observer - hi~
...
Warum zweiten der Zeichnung nicht empfangen kann? Danke
Danke, das ist großartig.Weiterhin kann ich ein Loop-Emit-Ereignis auf diese Weise konstruieren, aber es iteriere Body-Subscribe auf alle Beobachter jedes Mal? Ich möchte noch keinen neuen Thread für jedes Abo verwenden. – LoranceChen
Sieht aus, als müssten Sie 'publish'. Siehe dieses Beispiel: https://github.com/ReactiveX/RxScala/blob/a385e1a474a05af5173d3a6c5f380b0f87b50dff/examples/src/test/scala/examples/RxScalaDemo.scala#L438 – zsxwing
'publish' ist erstaunlich, ich muss Rx tiefer lernen. – LoranceChen