2

具有以下内容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 构建的。有任何想法吗?

4

1 回答 1

2

问题是您的程序在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

于 2015-05-22T13:18:12.370 回答