3
作爲scala和scalaz的新手,使用promise時遇到了問題。我的代碼是這樣的。使用scalaz的承諾時的調用函數
import scalaz._
import Scalaz._
object Main2 extends Application {
def sleeper() = {
Thread.sleep(2000)
}
val message = promise {
println("begin")
sleeper
println("ok")
"ok"
}
Thread.sleep(5000)
println("try to get")
println(message())
}
此輸出如下,看起來很奇怪。似乎睡眠方法沒有被調用,並且線程被阻塞。 -
begin
try to get
但是如果我更換臥鋪打電話給一個內嵌的睡眠,它看起來很好 - 在這裏
object Main2 extends Application {
def sleeper() = {
Thread.sleep(2000)
}
val message = promise {
println("begin")
Thread.sleep(2000)
println("ok")
"ok"
}
Thread.sleep(5000)
println("try to get")
println(message())
}
輸出 -
begin
ok
try to get
ok
我不明白爲什麼,你能大師請指教?