Awesome
vertx-async
vertx-async is a portage of caolan/async nodejs module to Vert.x framework that provides helpers methods for common async patterns.
Async provides many methods that include the usual 'functional' suspects (map
, reduce
, filter
, each
…) as well as some common patterns for asynchronous control flow (parallel
, series
, waterfall
…). All these functions assume you follow the vert.x convention.
Installation
vertx-async is available on maven central repository and OSSRH repository.
Quick Examples
Each
On a collection
@Override
public void start(final Future<Void> startFuture) {
AsyncFactorySingleton.getInstance().createCollections(context)
.each(IntStream.iterate(0, i -> i + 1).limit(100).boxed().collect(Collectors.toList()), (item, handler) -> {
System.out.println("get " + item);
handler.handle(DefaultAsyncResult.succeed());
}, e -> {
System.out.println("done.");
startFuture.complete(e.result());
});
}
On a map
@Override
public void start(final Future<Void> startFuture) {
AsyncFactorySingleton.getInstance().createCollections(context)
.each(IntStream.iterate(0, i -> i + 1).limit(100).boxed().collect(Collectors.toMap(p -> p.toString(), Function.identity())), (item, handler) -> {
System.out.println(item.getKey() + " -> " + item.getValue());
handler.handle(DefaultAsyncResult.succeed());
}, e -> {
System.out.println("done.");
startFuture.complete(e.result());
});
}
There are many more functions available so take a look at the wiki for a full list (work in progress) . This README aims to be comprehensive, so if you feel anything is missing please create a GitHub issue for it.
Multiple callbacks
Make sure to always calling the callback handler once, instead of a return
procedural programming statement style, otherwise you will cause multiple callbacks and unpredictable behavior in many cases.
Documentation
See our wiki (:construction:).
Collections
each | map | filter | reject | reduce | transform | detect | sort | some | every | concat |
Control Flow
series | parallel | whilst | until | during | forever | waterfall | seq |
retry | queue | applyEach (each) | times | race | cargo |
Utils
asyncify | constant | memoize | timeout |