等待System.Threading.Task并忽略结果?

unr*_*ity 3 f# async-await dotnet-httpclient

我试图通过直接潜入并尝试将一些C#代码转换为它来学习F#.我正在重写的一件事是异步方法的一部分,它等待调用HttpClient的GetAsync而不使用结果.那是:

await httpClient.GetAsync("http://www.example.com");
Run Code Online (Sandbox Code Playgroud)

以下是我尝试过的唯一没有得到红色波浪形的东西.虽然我认为它是有效的,但它确实创建了一个我可能想要避免的变量.

let! ignoreme = Async.AwaitTask <| httpClient.GetAsync("http://www.example.com")
Run Code Online (Sandbox Code Playgroud)

该怎么做?

Mis*_*hor 5

使用do!运算符结合Async.Ignore:

do! Async.AwaitTask(httpClient.GetAsync("http://www.example.com")) |> Async.Ignore
Run Code Online (Sandbox Code Playgroud)

这与写入let! ignoreme = ...然后忽略ignoreme绑定相同.

但是我认为最好坚持使用F#数据类型 - 避免Async.AwaitTask在哪里可以直接使用该Async<'T>类型.我认为FSharp.Data库会有很好的帮助.