是否可以在Scala.js的Future中入睡?
就像是:
Future {
Thread.sleep(1000)
println("ready")
}
Run Code Online (Sandbox Code Playgroud)
如果尝试此方法,则会出现异常,说明该sleep方法不存在。
似乎可以在JS中进行睡眠:sleep()的JavaScript版本是什么?即使不可能阻止。
您不能真正停在未来机构的中间,但可以将您的未来注册为“延迟”未来的后续活动,您可以将其定义为:
def delay(milliseconds: Int): Future[Unit] = {
val p = Promise[Unit]()
js.timers.setTimeout(milliseconds) {
p.success(())
}
p.future
}
Run Code Online (Sandbox Code Playgroud)
并且您可以将其用作:
val readyLater = for {
delayed <- delay(1000)
} yield {
println("ready")
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
440 次 |
| 最近记录: |