我在 Scala 项目中使用 RxJava 并说我有这个简单的Observable
:
Observable[String](observer => while (true) observer onNext "hi")
.subscribe(v => println(v))
println("hello")
我永远不会收到“你好”消息,因为while
阻塞了一个线程。如何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
makeOnNext
在单独的线程中调用而不是while
块本身?
====================================
我当然可以换成while
一个Future
:
Observable[String](observer => Future { while (true) observer onNext "hi" })
.subscribe(v => println(v))
println("test") // "test" gets printed
但也许存在更多的 rx 惯用方式来做到这一点?