/*
* Copyright (C) 2015 Actor LLC. <https://actor.im>
*/
package im.actor.runtime.js.utils;
import com.google.gwt.core.client.JavaScriptObject;
public abstract class JsPromiseExecutor {
private JavaScriptObject resolveFunc;
private JavaScriptObject rejectFunc;
public JsPromiseExecutor() {
}
public final void performExecute(JavaScriptObject resolve, JavaScriptObject reject) {
this.resolveFunc = resolve;
this.rejectFunc = reject;
execute();
}
public abstract void execute();
protected void resolve() {
call(resolveFunc);
}
protected void resolve(Object arg) {
call(resolveFunc, arg);
}
protected void reject() {
call(rejectFunc);
}
protected void reject(Object arg) {
call(rejectFunc, arg);
}
private native void call(JavaScriptObject func)/*-{
func();
}-*/;
private native void call(JavaScriptObject func, Object arg)/*-{
func(arg);
}-*/;
}