【发布时间】:2019-08-18 05:12:42
【问题描述】:
处理异步 while 循环累积的惯用 F# 方式是什么?
我正在使用新的(仍为预览版)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到异步块,因为我怀疑这是你想要的?
标签: f# azure-cosmosdb idioms