我陷入了这种情况。 我有2种方法C# - 如何多次使用API调用的结果
public class Test
{
public void Test()
{
A();
B();
}
Method A
private async Task(returntype) A()
{
var items = await C();
var myItems = activityItems.Where(x => x.name="my");
return myItems;
}
Method B
private async Task(returntype) A()
{
var items = await C();
var myItems = activityItems.Where(x => x.name="all");
return myItems;
}
Method C is await method
private async Task(ResultList) C() //appserver call
{
var itemsList= await Ioc.Resolve<IServiceCall>().InvokeAsync<IManager, ResultList>(this.MakeWeakFunc<IManager, ResultList>((service) =>
service.GetCounts()));
return activityItemsCount;
}
}
现在我需要(从乙一旦从A和一次)调用“C”只是一次而不是两次,如上所述。
这是非常重要的,因为API调用是昂贵的,我买不起调用API两次做同样的工作
我怎么能这样做?
例如:
API调用返回10项
A使用前5出10
B的基于你编辑的问题,采用未来5出的10个项目
请提供真实的代码,而不是伪代码。请编辑您的文章,并在文字和代码之间进行区分。你的问题似乎没有与异步/等待相关。取而代之的是,您正在询问如何多次使用API调用的结果。问题在哪里? – gdir
所以基本上你希望方法C缓存结果,如果A或B制作相同的API,它们会从缓存中返回结果,而不是再次调用API? –
@JonClarke有什么办法可以不使用本地缓存。就像有一个私人变量说“结果”。将api调用的结果存储在此变量中,并在方法'A'和方法'B'中使用它。 – ZigZig