tôi có phương pháp giao diện sau:Viết lại C# mã sử dụng Task.WhenAll trong F #
Task<string[]> GetBlobsFromContainer(string containerName);
và thực hiện nó trong C#:
var container = await _containerClient.GetContainer(containerName);
var tasks = container.ListBlobs()
.Cast<CloudBlockBlob>()
.Select(b => b.DownloadTextAsync());
return await Task.WhenAll(tasks);
Khi tôi cố gắng viết lại nó trong F #:
member this.GetBlobsFromContainer(containerName : string) : Task<string[]> =
let task = async {
let! container = containerClient.GetContainer(containerName) |> Async.AwaitTask
return container.ListBlobs()
|> Seq.cast<CloudBlockBlob>
|> Seq.map (fun b -> b.DownloadTextAsync())
|> ??
}
task |> ??
Tôi đang mắc kẹt với các dòng cuối cùng.
Cách quay lại Task<string[]>
từ F # đúng cách?
Xin lỗi, bỏ lỡ mô tả 'containerClient.GetContainerReference'. Đó là một sự trừu tượng trên đầu trang của 'CloudStorageAccount' từ Azure SDK. Và vâng, bạn nói đúng, kiểu trả về thực tế là 'Task'. Đã từng là 'Tác vụ >' nhưng tôi đã thay đổi điều đó. –
abatishchev
Điều tôi không biết là 'Async.Parallel' và hoàn toàn quên về 'return!'. – abatishchev