我陷入了這種情況。 我有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