@JsType(isNative=true, namespace=GLOBAL)
public class Promise {
@JsConstructor
public Promise(PromiseExecutor executor){
}
//catch is a keyword in java
@JsMethod(name = "catch")
public native Promise onException(Function reject);
public native Promise then(Function resolve);
}
@JsFunction
@FunctionalInterface
public interface PromiseExecutor {
public void executor(Function resolve, Function reject);
}
@JsFunction
@FunctionalInterface
public interface Function {
public Object call(Object event);
}
//...
Promise promise = new Promise(new PromiseExecutor() {
@Override
public void executor(Function resolve, Function reject) {
//do something
resolve(value);
}
});
//...
promise.then(new Function(){
@Override
public Object call(Object resp) {
// Do something with resp, which is your resolved value
return null;
}
});