GitHub

Travis CI License MIT

Promises/A+ logo IOU Java is a [Promises/A+](https://github.com/promises-aplus/promises-spec) compliant promise library that extends [IOU Core](https://github.com/ioweyou/iou-core).

Maven


<dependency>
    <groupId>nl.brusque.iou</groupId>
    <artifactId>iou-java</artifactId>
    <version>1.0.0-beta-01</version>
</dependency>

Gradle


compile 'nl.brusque.iou:iou-java:1.0.0-beta-01' { transitive = true }

Example


Call with single then

IOU<Integer> iou = new IOU<>();
iou.getPromise()
        .then(new IThenCallable<Integer, Void>() {
            @Override
            public Void apply(Integer input) throws Exception {
                System.out.println(input.toString());
                return null;
            }
        });
iou.resolve(42); // prints "42"

Chained or piped promise

IOU<Integer> iou = new IOU<>();
iou.getPromise()
        .then(new IThenCallable<Integer, Integer>() {
            @Override
            public Integer apply(Integer input) throws Exception {
                return input * 10;
            }
        })
        .then(new IThenCallable<Integer, String>() {
            @Override
            public String apply(Integer input) throws Exception {
                return String.format("The result: %d", input);
            }
        })
        .then(new IThenCallable<String, Void>() {
            @Override
            public Void apply(String input) throws Exception {
                System.out.println(input);
                return null;
            }
        });
iou.resolve(42); // prints "The result: 420"

Rejecting a promise

"IOU iou = new IOU<>(); iou.getPromise() .then(new IThenCallable () { @Override public Integer apply(Integer integer) throws Exception { return integer * 42; } }) .fail(new IThenCallable

Read the original on github.com ↗