У меня есть следующий метод интерфейса:Переписывая C# код, используя Task.WhenAll в F #
Task<string[]> GetBlobsFromContainer(string containerName);
и его реализация в C#:
var container = await _containerClient.GetContainer(containerName);
var tasks = container.ListBlobs()
.Cast<CloudBlockBlob>()
.Select(b => b.DownloadTextAsync());
return await Task.WhenAll(tasks);
Когда я пытаюсь переписать его в 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 |> ??
Я застрял в последних строках.
Как вернуться к Task<string[]>
с F # правильно?
Простите, пропустил описание 'containerClient.GetContainerReference'. Это абстракция поверх «CloudStorageAccount» от Azure SDK. И да, вы правы, фактический тип возврата - «Задача'. Используется для 'Task >', но я изменил это. –
abatishchev
То, о чем я не знал, это 'Async.Parallel' и полностью забыл о' return! '. – abatishchev