0

以下に示すように、文字列を返す Akka HTTP サービスがあります。

val route1: Route = {
    path("hello") {
      get{
        complete{
          println("Inside r1")
          "You just accessed hello"
        }
      }
   }
}

map と flatMap の違いを理解しようとしています

たとえば、次のコードでは、期待どおりの結果が得られます。

val future1: Future[String] = 
  Http()
   .singleRequest(
      HttpRequest(method = HttpMethods.GET,
                  uri = "http://localhost:8187/hello"))
   .flatMap(testFlatFunc)

def testFlatFunc(x: HttpResponse): Future[String] = {
  Unmarshal(x).to[String]
}

しかし、それをマップに置き換えようとすると、以下のように出力が得られますFulfilledFuture(You just accessed hello)

val future1: Future[String] = Http()
    .singleRequest(
      HttpRequest(method = HttpMethods.GET,
                  uri = "http://localhost:8187/hello"))
    .map(testFunc)

def testFunc(x: HttpResponse): String={
  Unmarshal(x).to[String].toString
}

map() が意図したとおりに機能しないのはなぜですか?

4

2 に答える 2