有很多示例如何在f#中执行异步任务,例如
[dowork 1; work 2]
|> Async.Parallel
|> Async.RunSynchronously
但是,如何异步地仅等待第一个结果呢?
例如,如果我想运行一些并行查找任务,并且想在获得第一个成功结果时进行更深入的搜索。 (基本上相当于C#世界中的
Task.WhenAny
...)
最佳答案
我会用类似的东西:
let any asyncs =
async {
let t =
asyncs
|> Seq.map Async.StartAsTask
|> System.Threading.Tasks.Task.WhenAny
return t.Result.Result }
关于asynchronous - F#如何运行几个异步任务并等待第一个完成的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20517216/