2017-10-07 145 views
1

Scala.js中的未来可以睡在里面吗?睡在Scala.js的未来中

喜欢的东西:

Future { 
    Thread.sleep(1000) 
    println("ready") 
} 

如果我试试这个,然后我得到一个异常说sleep方法不存在。

看起来好像有可能睡在JS:What is the JavaScript version of sleep()?即使不可能阻止。

+0

只需使用'从链接的解决方案:)(我假设你完全明白你为什么不想做的大部分时间)pausecomp'。 – gzm0

+0

我认为下面给出的答案是完全正确的,并且没有理由为什么有人不应该在任何时候推迟未来。 – jhegedus

回答

3

你真的不能停顿,今后身体的中部,但你可以在你的未来作为后续注册到“延迟”未来,你可以定义为:您可以再

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") 
} 
+0

非常感谢!非常好 ! – jhegedus

+0

根据你是真的想睡一段时间还是希望稍后会发生某些事情(通常需要进行测试),请注意jsExt库中的notYet函数,它的宽松版本为https ://github.com/jducoeur/jsext –

+0

嗯......我真的不明白你的意思......后来呢?谁决定什么是后来?后来关于什么?你有一个例子吗? – jhegedus