带有 GWT JsInterop 的 Javascript Promise 对象

标签 javascript gwt

我想用这段代码来 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/

相关文章:

javascript - 使用 Axios 在 Microsoft Teams 中发布消息

javascript - HTML 表格中每两列 CSS/Javascript 交替颜色

javascript - 对话框未关闭 native react

java - GWT:response.setHeader - 如何?

java - 我们如何在 GWT 中使用 onbefoerunload

javascript - 将索引发送到 XMLHttpRequest onLoad() 结果仅使用所有 onLoad() 的最后一个索引

javascript - 计算每个数组项的出现次数并将结果作为对象返回

html - 摆脱 GWT 弹出面板中的白框

javascript - 带有外部 Javascript 脚本的 GWT 库