我想用这段代码来 init() 第三方 Javascript 库:
@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) {
...
});
最佳答案
此示例用于从 GWT 代码返回 JS Promise,但您可以根据您的场景进行调整,它只是将 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) { }
}
关于带有 GWT JsInterop 的 Javascript Promise 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37717870/