Использование таймера из 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