zipWith
Combines elements from multiple sources through a combine
function and passes the returned value downstream.
Signature
Source.zipWith
Source.zipWith
Flow.zipWith
Flow.zipWith
Description
Combines elements from multiple sources through a combine
function and passes the returned value downstream.
See also:
Examples
- Scala
-
source
import akka.stream.scaladsl.Source import akka.stream.scaladsl.Sink val sourceCount = Source(List("one", "two", "three")) val sourceFruits = Source(List("apple", "orange", "banana")) sourceCount .zipWith(sourceFruits) { (countStr, fruitName) => s"$countStr $fruitName" } .runWith(Sink.foreach(println)) // this will print 'one apple', 'two orange', 'three banana'
- Java
-
source
import akka.stream.javadsl.Keep; import akka.stream.javadsl.Source; import akka.stream.javadsl.Sink; import java.util.*; Source<String, NotUsed> sourceCount = Source.from(Arrays.asList("one", "two", "three")); Source<String, NotUsed> sourceFruits = Source.from(Arrays.asList("apple", "orange", "banana")); sourceCount .zipWith( sourceFruits, (Function2<String, String, String>) (countStr, fruitName) -> countStr + " " + fruitName) .runForeach(System.out::println, system); // this will print 'one apple', 'two orange', 'three banana'
Reactive Streams semantics
emits when all of the inputs have an element available
backpressures both upstreams when downstream backpressures but also on an upstream that has emitted an element until the other upstream has emitted an element
completes when any upstream completes