如何使用 F# 对公开基于事件的异步模式(例如WebClient类)的异步操作类的内置支持?
let Download(url : Uri) =
let client = new WebClient()
let html = client.DownloadString(url)
html
当我尝试将其更改为使用“让!” 在异步块中(如 Soma 最近的帖子中所述)
let Download(url : Uri) =
async {
let client = new WebClient()
let! html = client.DownloadStringAsync(url)
return html }
我收到一条错误消息:
类型约束不匹配。单元类型与 Async<'a> 类型不兼容 'unit' 类型与'Async<'a>' 类型不兼容
编辑:我真的在问使用 *Async() 方法的一般问题,WebClient 只是一个简单的例子。微软说“......你应该尽可能使用基于事件的异步模式[而不是 BeginFoo()/EndFoo()] 来公开异步功能......”所以我认为应该有一种简单的方法来消费任意*来自 F# 的 Async() 方法。