Опрос будущего в Scala.js - PullRequest
       10

Опрос будущего в Scala.js

0 голосов
/ 14 декабря 2018

У меня есть будущее в кроссплатформенном приложении JVM / JS.Будущее опрашивается следующим образом в JVM:

val load = Future(loadSometing())

if (load.isCompleted) {
  val loaded = Await.result(load, Duration.Inf)
  // now process it
}

Это не может работать с Scala.js, так как Scala.js не реализует Await.В моем случае, однако, я не использую Await, чтобы ждать, только чтобы получить результат, который, я знаю, уже есть.Я знаю, что правильное решение - сделать код полностью асинхронным и выполнить обработку в обработчике Future (map или onComplete), но даже известно, что это неправильный способ, может ли результат Future быть опрошен каким-либо образом в Scala.JS

1 Ответ

0 голосов
/ 14 декабря 2018

Используйте Future.value для опроса Future без ожидания / блокировки:

import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global

val f = Future { 42 }
println(f.value)

js.timers.setTimeout(500) {
  println(f.value)
}

напечатает

None
Some(Success(42))

Fiddle здесь

...