Таймер, который можно использовать в JVM Scala & Scala.js - PullRequest
4 голосов
/ 22 мая 2019

В данный момент я работаю над проектом, который кросс-компилируется в Scala.js и обычную JVM Scala.Теперь мне нужно реализовать таймер (для повторного подключения веб-сокета), который запускает функцию каждые x секунд.Что может быть хорошей реализацией такого таймера, который можно кросс-компилировать?

Насколько я знаю, я не могу использовать, например:

  • java.util.concurrent (не компилируется вScala.js)
  • setTimeout и setInterval (javascript - невозможно использовать из JVM Scala)

Есть ли хорошая альтернатива или я ошибаюсь и их можно использовать?

1 Ответ

7 голосов
/ 22 мая 2019

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)

Консультируйтесь с JavaDoc, который я связал выше для деталей об API.

...