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