fsx 脚本在异步响应返回之前完成

fsx script finishes before async response is back

我有以下 .fsx 脚本:

#r "packages/FSharp.Data/lib/net40/FSharp.Data.dll"
open FSharp.Data

async { let! html = Http.AsyncRequestString("http://whosebug.com")
        printfn "%d" html.Length }
|> Async.Start

代码是正确的,因为它在 fsharpi 中按预期工作。我怀疑正在发生的事情是脚本在异步响应返回之前退出。等待响应返回的最简单方法是什么?

在这种情况下,您可以使用 |> Async.RunSynchronously。请参阅专家 F# 4.0 一书中的 https://msdn.microsoft.com/en-us/library/dd233250.aspx 或第 11 章。 Async.Start 可以非常有用地启动函数,这些函数将 return 其结果无阻塞地传送到 GUI。