1 + n 個の非同期呼び出し ( ) で構成される非同期コントローラー アクションを作成するにはどうすればよいawait
ですか? たとえば、最初にオブジェクトを取得する必要がありFoo
、それには可変数のBars
識別子があり、それらすべてのエンティティを取得する必要があるとしましょう (この質問のために、 はありfetchBarsByFooId
ませTask.WaitAll
んParallel.For
。
public async Task<ActionResult> Bars(int id) {
Foo foo = await this.FooProvider.GetFooAsync(id);
var bars = new ConcurrentQueue<Bar>();
// Sub-optimal version
foreach (int barId in foo.BarIDs) {
Bar bar = this.BarProvider.GetBar(barId);
bars.Enqueue(bar)
}
// Fetch each bar asynchronously and pass them to the view.
....
return View(bars.ToArray());
}