2016-06-09 54 views
0

我有這樣的代碼,我想使用的init()一個第三方JavaScript庫:的Javascript無極對象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無極對象,如何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) { } 
}