我想在一个动作中并行处理多个任务,并在完成后立即按最先完成的顺序推回任何任务结果。
例如,如果任务 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"))
}