非同期ワークフローの中でTaskってどうやって使うんだろう?と思ってたらAsyncクラスにAwaitaTaskっていうずばりっぽいメソッドがありました。こいつを使えば非同期ワークフローの中でlet!で結果を受け取ることができる。HttpClientを使ってGoogleトップページの情報をとってくるコードはこんな感じになりました。
割といい感じかも。
open System.Net.Http
async {
use c = new HttpClient()
let! r = c.GetAsync("http://www.google.co.jp") |> Async.AwaitTask
r.EnsureSuccessStatusCode() |> ignore
let! body = r.Content.ReadAsStringAsync() |> Async.AwaitTask
printfn "%A" body
} |> Async.RunSynchronously