Scala для понимания - объединение будущего AbstractSeq

Имея следующий код:

def getListFull: Future[org.json4s.JsonAST.JValue] = {

  val windowSize = 8

  val result = for {
    response <- getResponse()
    if (response \ "response_code").extract[Int] == 0
    maxLine <- Future{(response \ "max_line").extract[Int]}
    res <- Future.traverse(0 until maxLine)(i => getResponse(..., i,...))
  } yield res

  Future.reduceLeft(result)(_ merge _)

  }
}

Я получаю следующие ошибки компиляции:

Error:(91, 48) Cannot construct a collection of type scala.collection.AbstractSeq[org.json4s.JsonAST.JValue] with elements of type org.json4s.JsonAST.JValue based on a collection of type scala.collection.AbstractSeq[Int].
    res <- Future.traverse(0 until maxLine)(i => getResponse(

Error:(91, 48) not enough arguments for method traverse: (implicit cbf: scala.collection.generic.CanBuildFrom[scala.collection.AbstractSeq[Int],org.json4s.JsonAST.JValue,scala.collection.AbstractSeq[org.json4s.JsonAST.JValue]], implicit executor: scala.concurrent.ExecutionContext)scala.concurrent.Future[scala.collection.AbstractSeq[org.json4s.JsonAST.JValue]].
Unspecified value parameters cbf, executor.
    res <- Future.traverse(0 until maxLine)(i => getResponse(

Error:(98, 25) type mismatch;
found   : scala.concurrent.Future[Nothing]
required: 
scala.collection.immutable.Iterable[scala.concurrent.Future[?]]
  Future.reduceLeft(result)(_ merge _)

Подпись функции getResponse:

def getResponse(restUrl: String,
              urlParams: Map[String, String] = Map("" -> ""),
              connectTimeout: Int = 5000,
              readTimeout: Int = 5000,
              requestMethod: String = "GET"): Future[org.json4s.JsonAST.JValue] = Future {

Цель состоит в том, чтобы вызвать REST API через getResponse несколько раз с разными аргументами и объединить полученные JSON.

Заранее спасибо!

0 ответов

Другие вопросы по тегам