我有一个跨平台的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中以某种方式轮询?
发布于 2018-12-14 22:59:41
使用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))https://stackoverflow.com/questions/53781624
复制相似问题