可以在JVM Scala和Scala.js中使用的计时器

Flo*_*erl 4 java scala timer scala.js

目前,我正在一个交叉编译到Scala.js和普通JVM Scala的项目中。现在,我需要实现一个计时器(用于重新连接websocket),该计时器每x秒触发一次函数。可以交叉编译的计时器的良好实现是什么?

据我所知,我不能使用例如:

  • java.util.concurrent (不会编译为Scala.js)
  • setTimeoutsetInterval(javascript-无法从JVM Scala使用)

有什么好的选择吗?或者我错了,可以使用这些吗?

sjr*_*jrd 7

java.util.Timer 受Scala.js支持,并完全提供您正在描述的功能:

val x: Long = seconds
val timer = new java.util.Timer()
timer.scheduleAtFixedRate(new java.util.TimerTask {
  def run(): Unit = {
    // this will be executed every x seconds
  }
}, 0L, x * 1000L)
Run Code Online (Sandbox Code Playgroud)

有关API的详细信息,请查阅我上面链接的JavaDoc。