Ich bekomme eine Liste von Daten von einem HTTP
Aufruf. Ich weiß dann, welche Werte für einen anderen HTTP
Anruf erhalten. Ich möchte alles asynchron haben. Aber ich muss diese Daten mit Expecto
'stestCaseAsync : string -> Async<unit> -> Test
verwenden. Also, mein Ziel ist es, eine Signatur wie folgt zu bekommenF # Async machen <Async<MyTpe> []> zu Async <MyType> []
So würde ich gerne eine Liste von testCaseAsync
bekommen.
Also, ich habe im Grunde so etwas wie dieses:
// Async<Async<Item>[]>
let getAsyncCalls =
async {
let! table = API.getTable()
// Async<Item>[]
let items =
table.root
|> Array.map (fun x -> API.getItem x.id)
return item
}
Wenn ich sie parallel laufen erhalte ich:
// Async<Item[]>
let getAsyncCalls =
async {
let! table = API.getTable()
// Item[]
let! items =
table.root
|> Array.map (fun x -> API.getItem x.id)
return item
}
So, das mich nicht Async<Item>[]
bekommt. Ich bin mir nicht sicher, ob das möglich ist. Ich möchte Async.RunSynchronously
für den API.getTable
Aufruf vermeiden, da das zu Deadlocks führen kann, richtig? Es wird höchstwahrscheinlich von einem zwischengespeicherten Wert (memoized
) aufgerufen werden, also bin ich nicht sicher, dass das einen Unterschied machen wird.
Ich denke, ich werde weiter daran arbeiten, wenn jemand anderes ist schlauer als ich :-) Vielen Dank im Voraus!