什么是在F#中处理异步while循环累加的惯用方式?
我正在使用新的(仍处于预览阶段)Azure Cosmos DB SDK。查询数据库返回一个 CosmosResultSetIterator<T>
,其中具有一个 HasMoreResults
属性和一个 FetchNextSetAsync()
方法。我的直译C#代码如下:
let private fetchItemsFromResultSet (resultSetIterator: CosmosResultSetIterator<'a>) =
let results = ResizeArray<'a>()
async {
while resultSetIterator.HasMoreResults do
let! response = resultSetIterator.FetchNextSetAsync() |> Async.AwaitTask
results.AddRange(response |> Seq.toArray)
return Seq.toList results
}
let results
移到异步块中,因为我猜这是你想要的? - Just another metaprogrammer