有人能给我一个简单的例子,说明使用李浩义的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中的所有信息都很有用,但我仍然无法为简单的计时器获得正确的语法。
答案 0 :(得分:3)
如果我从文档中正确理解,您只需在范围内提供隐式DomScheduler而不是AkkaScheduler
:
import rx.ops._
implicit val scheduler = new DomScheduler