Observable
次のものがあるとしましょうrxjava-scala-0.18.4
@volatile var dorun = true
var subscriber: Subscriber[String] = null
val myObs = Observable { obs: Subscriber[String] =>
subscriber = obs
Subscription { println("unsubscribed"); dorun = false }
}
val sub = myObs.head.subscribe(println(_))
assertTrue(dorun)
subscriber.onNext("hello")
Thread.sleep(500)
assertFalse(dorun)
subscriber.onNext("world")
Thread.sleep(500)
assertFalse(dorun)
2 番目のアサーションは失敗します。つまり、head
サブスクライブは解除されません。Observables の私の理解は間違っていますか、それともhead
最初の要素が発行された後に登録を解除する必要がありますか?