Ich bin in einer Situation wie dieser stecken. Ich habe 2 MethodenC# -wie das Ergebnis eines API-Aufrufs mehrmals verwenden
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;
}
}
Jetzt brauche ich statt zweimal nur einmal ‚C‘ zu nennen (einmal aus von A und einmal von B), wie oben erläutert.
Dies ist sehr wichtig, weil api Anruf teuer ist und ich kann nicht leisten, api zu nennen zweimal zu tun gleiche Arbeit
Wie kann ich das tun?
Beispiel:
Api Aufruf liefert 10 Stück
Ein erstes 5 von 10
B verwendet nächsten 5 von 10 Artikel
Bitte echten Code zur Verfügung stellt, nicht Pseudo-Code. Bitte bearbeiten Sie Ihren Beitrag und unterscheiden Sie zwischen Text und Code. Ihr Problem scheint nicht mit async/await verwandt zu sein. Stattdessen fragen Sie, wie Sie das Ergebnis eines API-Aufrufs mehrmals verwenden können. Wo ist das Problem? – gdir
Also im Grunde wollen Sie die Methode C die Ergebnisse zwischenzuspeichern und wenn A oder B die gleiche API machen, geben sie die Ergebnisse aus dem Cache zurück, anstatt die API erneut aufzurufen? –
@ JonClarke Gibt es einen Weg, ohne lokalen Cache zu verwenden. Etwas wie eine private Variable sagen "Ergebnis". Speichern Ergebnis des API-Aufrufs in dieser Variable und verwenden Sie es in der Methode 'A' und Methode 'B' – ZigZig