A Java version of Javascript async generator. Idea is to create an iterator-like interface that emit elements as CompletableFuture ( the Java counterpart of Javascript Promise ) enabling asynchronous iteration over data
Note:
From release 3.0.0 the miminum supported Java version is the
Java 17and will not be longer available the artifactasync-generator-jdk8
Maven
<dependency>
<groupId>org.bsc.async</groupId>
<artifactId>async-generator</artifactId>
<version>3.2.2</version> <!-- Or the current snapshot version -->
</dependency>AsyncGenerator<Response> makeMultipleApiCalls(List<RequestData> requestsData) {
return AsyncGenerator.map(requestsData, requestData -> {
CompletableFuture<Response> res = asyncApiCall( requestData );
return res;
});
}
List<RequestData> resquestsData = ....
// can iterate using lambda function (Consumer)
makeMultipleApiCalls( resquestsData )
.forEachAsync( response -> logger.info( "Api response: " + response ) )
.join();
// can iterate using classic for( : )
AsyncGenerator<Response> generator = makeMultipleApiCalls( resquestsData );
for( Response response : generator ) {
logger.info( "Api response: " + response )
}