私は Scala プロジェクトで RxJava を使用しており、この単純なものがあると言いますObservable
:
Observable[String](observer => while (true) observer onNext "hi")
.subscribe(v => println(v))
println("hello")
while
スレッドがブロックされているため、「hello」メッセージが表示されません。Observable
ブロックを回避するために別のスレッドで実行するにはどうすればよいですか?
==================================
私はobserveOn
助けることができると思っていましたが、そうではありません。これを実行する:
val s = rx.lang.scala.schedulers.NewThreadScheduler.apply
Observable[String](observer => while (true) observer onNext "hi")
.observeOn(s).subscribe(v => println(v))
println("hello")
...まだ「こんにちは」を出力しません。observeOn
make を追加すると、ブロック自体 OnNext
ではなく別のスレッドで呼び出されると思いますか?while
==================================
もちろん、次のようにラップwhile
することもできFuture
ます。
Observable[String](observer => Future { while (true) observer onNext "hi" })
.subscribe(v => println(v))
println("test") // "test" gets printed
しかし、おそらく、これを行う rx 慣用的な方法が他にも存在しますか?