将 GWT 中的 Java 回调传递给 returns Promise 的 JSNI 方法?

Passing a Java callback in GWT to JSNI method which returns a Promise?

我是 Promises 的新手,需要一些关于如何在从 Java 调用的 JSNI 方法中处理返回的 Promise 的建议。 由于 GWT 的旧版本 2.7,无法使用 JsInterop。 任何建议表示赞赏。

感谢您的宝贵时间!

如果您只需要读取 return 对象的属性,您可以尝试 将其视为 JSONObject.

或者,您可以在 promise 的解析器函数中调用 Java 对象的方法来检查条件以决定是否要 resolve/reject。 p.then() 可以用 onFulfilled/onRejected 函数调用,只是包装 Java 方法调用来处理结果。

示例:

public class PromiseWrapper {

    boolean evaluate(String value) {
        return value != null ? true : false;
    }

    void onFulfilled(String value) {
        // use value
    }

    void onRejected(Strin reason) {
        // use reason
    }

    public native void doSomethingAynchronously() /*-{
        var p = new Promise(
            function(resolve, reject) {
                var value = null; // Get value from somewhere
                if(this.@com.company.project.PromiseWrapper::evaluate(Ljava/lang/String;)(value)) {
                    resolve(value);
                }
                else {
                    reject("Because");
                }
            }
        );
        p.then(function(value) {
                this.@com.company.project.PromiseWrapper::onFulfilled(Ljava/lang/String;)(value);
            }, 
            function(reason) {
                this.@com.company.project.PromiseWrapper::onRejected(Ljava/lang/String;)(reason);
            }
        );
    }-*/;

}

这是一个未经测试的例子。