在 Scala.js 睡在 Future 里
Sleep inside Future in Scala.js
是否可以在 Scala.js 的 Future 中睡觉?
类似于:
Future {
Thread.sleep(1000)
println("ready")
}
如果我尝试这样做,我会得到一个异常,提示 sleep
方法不存在。
似乎可以在 JS 中休眠:What is the JavaScript version of sleep()? 尽管无法阻止。
你不能真正停在 future 主体的中间,但你可以将你的 future 注册为 "delay" Future 的后续,你可以将其定义为:
def delay(milliseconds: Int): Future[Unit] = {
val p = Promise[Unit]()
js.timers.setTimeout(milliseconds) {
p.success(())
}
p.future
}
然后您可以将其用作:
val readyLater = for {
delayed <- delay(1000)
} yield {
println("ready")
}
是否可以在 Scala.js 的 Future 中睡觉?
类似于:
Future {
Thread.sleep(1000)
println("ready")
}
如果我尝试这样做,我会得到一个异常,提示 sleep
方法不存在。
似乎可以在 JS 中休眠:What is the JavaScript version of sleep()? 尽管无法阻止。
你不能真正停在 future 主体的中间,但你可以将你的 future 注册为 "delay" Future 的后续,你可以将其定义为:
def delay(milliseconds: Int): Future[Unit] = {
val p = Promise[Unit]()
js.timers.setTimeout(milliseconds) {
p.success(())
}
p.future
}
然后您可以将其用作:
val readyLater = for {
delayed <- delay(1000)
} yield {
println("ready")
}