2015-05-22 34 views
2

用下面build.sbtRxScala可觀察到從未運行

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以及0.13構建。有任何想法嗎?

回答

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.sleepo.toBlocking.last,不能前o終止返回。

+0

該死的,我準備試試!我不想睡​​覺,因爲它阻塞等。任何「RX」方式阻止它在主func中退出? –

+0

P.S.我覺得沒有先嚐試就覺得很愚蠢! –

+0

@atc查看我的編輯。我認爲*正確的*方式取決於你的應用程序... – ziggystar