2016-06-09 8 views
0

У меня есть этот код, который я хочу использовать для инициализации() стороннего Javascript библиотеки:Javascript Promise с GWT JsInterop

@JsType(namespace = JsPackage.GLOBAL, name = "Kinvey", isNative = true) 
public class Kinvey { 
    public String appKey; 
    public String appSecret; 
    public static native void init(); 
} 

Проблема заключается в init функции возвращает объект Javascript Promise, как может ли GWT работать с этим объектом с помощью JsInterop?

var promise = Kinvey.init({ 
    appKey : 'your_app_key', 
    appSecret : 'your_app_secret' 
}); 
promise.then(function(activeUser) { 
    ... 
}, function(error) { 
    ... 
}); 

ответ

2

Этот пример используется для возврата JS обещает от GWT кода, но вы можете адаптировать его для вашего сценария, он просто оборачивает Promise класса Javascript со своим классом коллеги Java, объявив также then() и catch() методы:

@JsType(isNative = true, namespace = JsPackage.GLOBAL) 
public class Promise { 

    @JsFunction 
    public interface FunctionParam { 
     void exec(Object o); 
    } 

    @JsFunction 
    public interface ConstructorParam { 
     void exec(FunctionParam resolve, FunctionParam reject); 
    } 

    @JsConstructor 
    public Promise(ConstructorParam parameters) { 
    } 

    public Promise then(FunctionParam f) { } 

    public Promise catch(FunctionParam f) { } 
} 
Смежные вопросы