0

アクション内で複数のタスクを並行して処理し、タスクの結果を最初に完了した順序で、完了したらすぐにプッシュバックしたいと考えています。

たとえば、タスク A が 5 秒で完了し、タスク B が 3 秒で完了し、タスク C が 1 秒で完了した場合、出力は「C」、「B」、「A」になります。

次のコードは間違った順序で出力されているようで、すべてのタスクが完了するのを待ってから結果を出力します。

def lookup  = Action { implicit  req =>
    val a = Enumerator( Await.result(Promise.timeout("A", 5 seconds), 1 minute))
    val b = Enumerator( Await.result(Promise.timeout("B", 3 seconds), 1 minute))
    val c = Enumerator( Await.result(Promise.timeout("C", 1 second), 1 minute))

    val d = a >- b >- c

    Ok.chunked(d &> Comet(callback = "console.log"))
}
4

1 に答える 1