Variant of Future.find that applies a PartialFunction, if it's defined, rather than checking a predicate.
Variant of Future.find that applies a PartialFunction, if it's defined, rather than checking a predicate. This allows type safe transformation of matched values.
For example, if you wanted to find the first string that represented a non-negative integer:
val nonNegativeIntRegex = """[0-9]+""".r val futures: immutable.Seq[Future[String]] = startComputation() val matchOptionFuture: Future[Option[Int]] = Futures.findMatch(futures) { case nonNegativeIntRegex(s) => s.toInt }
(Types added for clarity where they would normally be inferred.)
With Future.find, you'd need to use something more verbose instead:
val matchOptionFuture: Future[Option[Int]] = Futures.find(futures) { case nonNegativeIntRegex(s) => true case _ => false }.map(_.toInt)
Executes f
immediately without an ExecutionContext.
Executes f
immediately without an ExecutionContext.
Returns a successful future if f
completes or a failed one if f
throws an exception.
Executes f
immediately.
Executes f
immediately. Returns f
's future (either successful or not) if f
completes
or a failed one if f
throws an exception.