У новичка в scala и 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
Я не понимаю, почему, гуру, пожалуйста, посоветуйте?