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

时间:2018-04-07 20:50:36

标签: gwt gxt jsni

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

谢谢你的时间!

1 个答案:

答案 0 :(得分:0)

如果您只需阅读返回对象的属性,您可以尝试 将其视为JSONObject

或者,您可以在promise的解析器函数中调用Java对象的方法,以检查条件以决定是否要解析/拒绝。 可以使用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);
            }
        );
    }-*/;

}

这是一个未经考验的例子。