使用scala.rx中的Timer

时间:2014-07-09 18:02:23

标签: scala timer scala.js scala.rx

有人能给我一个简单的例子,说明使用李浩义的scala.rx中的定时器,除了scalajs,dom和rx之外,它不依赖于Akka或任何其他库吗?

Haoyi的GitHub的定时器示例是:

import scala.concurrent.duration._
implicit val scheduler = new AkkaScheduler(akka.actor.ActorSystem())

val t = Timer(100 millis)
var count = 0  
val o = Obs(t){
  count = count + 1
}

println(count) // 3
println(count) // 8
println(count) // 13

然而,这使用了Akka。

查看scala.rx api,创建rx.ops.Timer的方法是:

new Timer(interval: FiniteDuration, delay: FiniteDuration)(implicit scheduler: Scheduler, p: Propagator[P], ec: ExecutionContext)

其中Scheduler是一个定义为:

的特征
abstract def scheduleOnce[T](interval: FiniteDuration)(thunk: ⇒ T)(implicit executor: ExecutionContext): Unit

Scheduler是JVM上的Akka ActorSystem和JavaScript中的setTimeout函数。"

虽然api中的所有信息都很有用,但我仍然无法为简单的计时器获得正确的语法。

1 个答案:

答案 0 :(得分:3)

如果我从文档中正确理解,您只需在范围内提供隐式DomScheduler而不是AkkaScheduler

import rx.ops._

implicit val scheduler = new DomScheduler