Browse Source

New method to observe an `Option[A]` from a future

This makes it much easier to mix in an observable from a future. I'd
also like to do a `Try[Option[A]]` method.
master
Sarah Gerweck 8 years ago
parent
commit
ccc644f9d4
  1. 20
      src/main/scala/org/gerweck/scalafx/util/FutureObservable.scala

20
src/main/scala/org/gerweck/scalafx/util/FutureObservable.scala

@ -46,4 +46,24 @@ object FutureObservable {
prop
}
}
def ofSuccessOption[A](future: Future[A])(implicit ec: ExecutionContext): ReadOnlyObjectProperty[Option[A]] = {
future.value match {
case Some(Success(a)) =>
ObjectProperty(Some(a))
case Some(Failure(f)) =>
logger.debug(s"Got failure from FutureObservable's result: $f")
ObjectProperty(None)
case None =>
val prop = ObjectProperty[Option[A]](None)
future onSuccess { case a =>
runLater {
prop.value = Some(a)
}
}
prop
}
}
}
Loading…
Cancel
Save