【发布时间】:2014-06-27 05:21:24
【问题描述】:
我有多个 async 方法,它们从不同的基于 OAuth 的 REST Api 调用返回相同类型。
如果我直接调用一个,我可以取回数据:
//Call a specific provider
public async Task<List<Contacts>> Get()
{
return await Providers.SpecificProvider.GetContacts();
}
但是,如果我尝试循环访问多个帐户,则对象会在 AWAIT 完成之前返回:
//Call all providers
public async Task<List<Contacts>> Get()
{
return await Providers.GetContactsFromAllProviders();
}
public async Task<List<Contacts>> GetContactsFromAllProviders()
{
var returnList = new List<Contacts>();
//Providers inherits from List<>, so it can be enumerated to trigger
//all objects in the collection
foreach (var provider in Providers)
{
var con = await provider.GetContacts();
returnList.Add(con);
}
return returnList;
}
我是 async 的新手,可能缺少一些简单的东西
【问题讨论】:
-
不同的情况。他已经找到了另一种循环的解决方案,并且正在寻求效率。
-
第一种方法中的
async关键字是多余的。你可以简单地return Providers.SpecificProvider.GetContacts();
标签: c# asp.net-web-api async-await