此示例取自 dotnet/fsharp 文档,由于以下原因,它已过时 - “此构造已弃用。WebRequest、HttpWebRequest、ServicePoint 和 WebClient 已过时。请改用 HttpClient。” https://learn.microsoft.com/en-us/dotnet/fsharp/language-reference/async-expressions
这个例子使用 HttpClient 看起来怎么样?
需要说明的是,我是 Web 开发的新手,但我确实了解异步表达式是什么,只是在将示例转换为使用 HttpClient 时遇到了麻烦。
open System.Net
open Microsoft.FSharp.Control.WebExtensions
let urlList = [ "Microsoft.com", "http://www.microsoft.com/"
"MSDN", "http://msdn.microsoft.com/"
"Bing", "http://www.bing.com"
]
let fetchAsync(name, url:string) =
async {
try
let uri = new System.Uri(url)
let webClient = new WebClient()
let! html = webClient.AsyncDownloadString(uri)
printfn "Read %d characters for %s" html.Length name
with
| ex -> printfn "%s" (ex.Message);
}
let runAll() =
urlList
|> Seq.map fetchAsync
|> Async.Parallel
|> Async.RunSynchronously
|> ignore
runAll()
这是我的一个项目中的一些代码。您可能希望以不同的方式处理错误,但我想您可以提取所需的内容。
编辑:我还添加了一些简单的错误处理并使示例变得完整。