Использование таймера из scala.rx

Может ли кто-нибудь дать мне простой пример использования Timer из scala.rx Ли Хаойи, который не зависит от Akka или каких-либо других библиотек, кроме scalajs, dom и rx?

Пример таймера из GitHub Haoyi:

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.

Глядя в api scala.rx, способ создать 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

Планировщик - это Akka ActorSystem в JVM и функция setTimeout в JavaScript."

Хотя вся информация в API полезна, я все еще не могу получить правильный синтаксис для простого таймера.

1 ответ

Решение

Если я правильно понял из документации, вы просто должны предоставить неявный DomScheduler в области видимости вместо AkkaScheduler:

import rx.ops._

implicit val scheduler = new DomScheduler
Другие вопросы по тегам