【问题标题】:Javascript Promise object with GWT JsInterop带有 GWT JsInterop 的 Javascript Promise 对象
【发布时间】:2018-03-28 06:28:09
【问题描述】:

我有这段代码,我想用它来初始化()第三方 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) {
    ...
});

【问题讨论】:

    标签: javascript gwt


    【解决方案1】:

    此示例用于从 GWT 代码返回 JS 承诺,但您可以根据您的场景对其进行调整,它只是将 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) { }
    }
    

    【讨论】:

    • catch 是 Java 中的一个特殊关键字,您如何解决这个问题?
    • @JsMethod(name="catch") public Promise catch_(… 虽然我现在推荐使用 jsinterop-core(或者是 jsinterop-core?)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多