0

アドホックな未来を作成し、それを呼び出すと、問題なく機能します。

scala> val f = future {Thread.sleep(1000 * 60 * 1); println( "Hi"); 20}
f:scala.actors.Future [Int] =

scala> f()
やあ
res39:Int = 20

同じ未来を作成して呼び出すawaitAllと、機能しません。未来が解決されなかったかのように戻りawaitAllます。None

scala> val f = future {Thread.sleep(1000 * 60 * 1); println( "Hi"); 20}
f:scala.actors.Future [Int] =

scala> awaitAll(1000 * 60 * 2、f)
やあ
res40:List [Option [Any]] = List(None)
4

2 に答える 2

1

お役に立てれば幸いです。

import scala.actors._

object StackOverFlow13331294 extends App {
    Futures awaitAll (1000 * 60 * 1,
            Seq(new StackOverFlow13331294 !! "execute"): _*) foreach println
}

class StackOverFlow13331294 extends Actor {
    start
    override def act = react {
        case "execute" =>
            // Thread sleep 1000 * 60 * 1 ?
            println("Hi")
            reply("20")
    }
}
于 2012-11-12T03:55:24.903 に答える
1

非推奨の を優先しfutureてください。Future

どうですか: 「非推奨の の過去の よりもFuture、将来の をscala.concurrent優先してください。」Futurescala.actors

いつものように、ヘザー・ミラーはそれを最もよく言います。コメントを参照してください。

object Test extends App {
  import scala.concurrent._
  import Await._
  import Future._
  import duration._
  import ExecutionContext.Implicits.global

  val data = List(1,2,3)
  result(traverse(data)(i => future{10 * i}), Duration("10 sec")) foreach println
}
于 2012-11-11T20:22:57.890 に答える