значение onSuccess не является членом scala .concurrent.Future [Any] - PullRequest
0 голосов
/ 27 мая 2020

Я хочу сделать запрос с URL-адреса, и у меня возникла проблема:

val f: Future[Any] = actor1 ? SyncRequest(url)
  f.onSuccess {
    case feed: xml.Elem => 
      val feedInfo = FeedInfo(
              ((feed \ "channel") \ "title").headOption.map(_.text).get,
              ((feed \ "channel") \ "description").headOption.map(_.text),
              ((feed \ "channel") \\ "item").map(item =>
                FeedItem((item \ "title").headOption.map(_.text).get,
                          (item \ "link").headOption.map(_.text))
              ).toList
            )

      complete(feedInfo)

Это ошибка:

[error] value onSuccess is not a member of scala.concurrent.Future[Any]
[error]                 f.onSuccess {
[error]                     ^
[error] one error found
[error] (Compile / compileIncremental) Compilation failed

Возможно, мне нужно использовать что-то вроде OnComplete а не OnSuccess?

1 Ответ

4 голосов
/ 27 мая 2020
Метод

onSuccess устарел в Scala 2.12 и удален в scala 2.13

@ deprecated ("используйте вместо него foreach или onComplete (имейте в виду, что они принимают всего, а не частичных функций) "," 2.12.0 ")

Ваш лучший друг onComplete сейчас

f.onComplete {
  case Success(value) => ???
  case Error(ex) => ???
}
...