Skip to content

Latest commit

 

History

History
78 lines (61 loc) · 3.75 KB

README.md

File metadata and controls

78 lines (61 loc) · 3.75 KB

vertx-async

Build Status via Travis CI Coverage Status Codacy Badge Dependency Status Maven Central

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