1

谁能给我一个简单的例子,使用李浩毅的 scala.rx 中的 Timer,它不依赖于 Akka 或除 scalajs、dom 和 rx 之外的任何其他库?

好易的 GitHub 上的 Timer 示例如下:

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 中的所有信息都很有用,但我仍然无法获得简单计时器的正确语法。

4

1 回答 1

3

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

import rx.ops._

implicit val scheduler = new DomScheduler
于 2014-07-09T20:38:16.640 回答