ich mit der Scala Programmiersprache gewohnt bin zu arbeiten - Scala mit I über Futures-Karte könnte, wie zum Beispiel:C# - eine async Aufgabe von einem Typ in einer anderen verwandeln
val response: Future[HttpResponse] = asyncHttpClient.GetRequest("www.google.com")
val statusCode: Future[Int] = response.map(r => r.statusCode)
Vor kurzem habe ich abgeholt mit C# arbeiten, und ich sah mich in der gleichen Situation wie das obige Beispiel, aber ich konnte nicht herausfinden, wie eine Aufgabe "map".
Hier ist ein Beispiel dessen, was ich erreichen will:
Task<HttpResponseMessage> response = httpClient.GetAsync("www.google.com")
Task<int> statusCode = response.Map(response => response.StatusCode)
Dank
Im Wesentlichen hat Jon Skeet dies implementiert, aber da Sie mir tatsächlich eine Standardbibliotheksmethode zur Verfügung stellen, werde ich Ihre Antwort akzeptieren. –
Ich denke @ Jon Skeets Antwort ist auch weniger effizient, weil es die Zustandsmaschine für das Warten schafft. Nicht ganz sicher, aber vielleicht gibt es ein Problem mit ContinueWith, das ich nicht sehe. – Stilgar
Diese Version wird leicht abweichende Ausnahmebehandlung haben. Ihre werden eine 'AggrageException' auslösen, die die tatsächliche Ausnahme enthält, John's wird die tatsächliche Ausnahme auslösen. –