Ho la seguente metodo di interfaccia:riscrivere il codice C# utilizzando Task.WhenAll in F #
Task<string[]> GetBlobsFromContainer(string containerName);
e la sua implementazione in C#:
var container = await _containerClient.GetContainer(containerName);
var tasks = container.ListBlobs()
.Cast<CloudBlockBlob>()
.Select(b => b.DownloadTextAsync());
return await Task.WhenAll(tasks);
Quando provo a riscriverlo in 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 |> ??
Sono bloccato con le ultime righe.
Come tornare a Task<string[]>
da F # correttamente?
Scusa, mancare di descrivere 'containerClient.GetContainerReference'. È un'astrazione in cima a "CloudStorageAccount" di Azure SDK. E sì, hai ragione, il tipo di ritorno effettivo è 'Compito'. Usato per essere 'Compito >' ma l'ho cambiato. –
abatishchev
La cosa che non sapevo è 'Async.Parallel' e mi sono completamente dimenticato di' return! '. – abatishchev