RxScala Observable 从不运行
RxScala Observable never runs
具有以下build.sbt
:
name := "blah"
version := "1.0"
scalaVersion := "2.11.6"
libraryDependencies ++= Seq("io.reactivex" % "rxscala_2.11" % "0.24.1", "org.scalaj" %% "scalaj-http" % "1.1.4")
和此代码:
import rx.lang.scala.Observable
import scala.concurrent.duration._
import scala.language.postfixOps
object Main {
def main(args: Array[String]): Unit = {
println("Ready?")
val o = Observable.interval(200 millis).take(5)
o.subscribe(n => println(s"n = ${n}"))
}
}
当我运行它时,打印的全部是Ready?
;我根本看不到 n = ...
。
我运行使用sbt run
;它是使用 Scala 2.6.11 和 RxScala 0.24.1 以及 sbt 0.13 构建的。有什么想法吗?
问题是您的程序在 o
触发之前退出。试试下面的代码:
import rx.lang.scala.Observable
import scala.concurrent.duration._
import scala.language.postfixOps
object Main {
def main(args: Array[String]): Unit = {
println("Ready?")
val o = Observable.interval(200 millis).take(5)
o.subscribe(n => println(s"n = ${n}"))
Thread.sleep(5000)
}
}
或者,您可以将 Thread.sleep
替换为 o.toBlocking.last
,这不能在 o
终止之前 return。
具有以下build.sbt
:
name := "blah"
version := "1.0"
scalaVersion := "2.11.6"
libraryDependencies ++= Seq("io.reactivex" % "rxscala_2.11" % "0.24.1", "org.scalaj" %% "scalaj-http" % "1.1.4")
和此代码:
import rx.lang.scala.Observable
import scala.concurrent.duration._
import scala.language.postfixOps
object Main {
def main(args: Array[String]): Unit = {
println("Ready?")
val o = Observable.interval(200 millis).take(5)
o.subscribe(n => println(s"n = ${n}"))
}
}
当我运行它时,打印的全部是Ready?
;我根本看不到 n = ...
。
我运行使用sbt run
;它是使用 Scala 2.6.11 和 RxScala 0.24.1 以及 sbt 0.13 构建的。有什么想法吗?
问题是您的程序在 o
触发之前退出。试试下面的代码:
import rx.lang.scala.Observable
import scala.concurrent.duration._
import scala.language.postfixOps
object Main {
def main(args: Array[String]): Unit = {
println("Ready?")
val o = Observable.interval(200 millis).take(5)
o.subscribe(n => println(s"n = ${n}"))
Thread.sleep(5000)
}
}
或者,您可以将 Thread.sleep
替换为 o.toBlocking.last
,这不能在 o
终止之前 return。