アクション内で複数のタスクを並行して処理し、タスクの結果を最初に完了した順序で、完了したらすぐにプッシュバックしたいと考えています。
たとえば、タスク 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"))
}