Sink.headOption

Materializes into a Future[Option[T]] CompletionStage<Optional<T>> which completes with the first value arriving wrapped in Some Optional, or a None an empty Optional if the stream completes without any elements emitted.

Sink operators

Signature

Sink.headOptionSink.headOption

Description

Materializes into a Future[Option[T]] CompletionStage<Optional<T>> which completes with the first value arriving wrapped in Some Optional, or a None an empty Optional if the stream completes without any elements emitted.

Example

In this example there is an empty source i.e. it does not emit any element and to handle it we have used headOption operator which will complete with None.

Scala
sourceval source = Source.empty
val result: Future[Option[Int]] = source.runWith(Sink.headOption)
result.foreach(println)
// None
Java
sourceSource<Integer, NotUsed> source = Source.empty();
CompletionStage<Optional<Integer>> result = source.runWith(Sink.headOption(), system);
result.thenAccept(System.out::println);
// Optional.empty

Reactive Streams semantics

cancels after receiving one element

backpressures never