2013-07-08 37 views
3

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

await httpClient.GetAsync("http://www.example.com"); 

下面是我尝试过的唯一一个没有得到红色小方格的东西。虽然我认为它是有效的,但它确实创建了一个我可能想要避免的变量。

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

这应该怎么做?

回答

4

使用do!运营商Async.Ignore结合:

do! Async.AwaitTask(httpClient.GetAsync("http://www.example.com")) |> Async.Ignore 

这是一样的书写let! ignoreme = ...,然后忽略ignoreme结合。

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

+0

我得到“这个表达式应该有'HttpResponseMessage'类型,但是这里的类型为'unit'” – unrelativity

+0

@unrelativity,是的,对不起。我已经纠正了答案。 – MisterMetaphor

+0

啊,那有效!感谢您链接到该库,它似乎最好与使用F#编写的库一起工作。 – unrelativity