F#异步等效于Promise.race?

时间:2019-06-06 15:28:00

标签: asynchronous f#

在JavaScript中,有一个名为Promise.race的函数,该函数接受一个承诺列表并返回一个新的承诺,该承诺在输入的 any 完成时完成。

请参阅:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/race

F#具有Async.Parallel,它在所有 all 输入异步操作完成时完成,但似乎没有与 any 等价的内容(例如Async.Race)。

如何用F#编写此代码?

1 个答案:

答案 0 :(得分:1)

可以使用任务。

类似这样的东西:

let any xs = 
  xs 
  |> Seq.map Async.StartAsTask
  |> Task.WhenAny
  |> Async.AwaitTask