将 java 脚本回调作为 java 方法参数传递

Pass javascript callback as java method argument

在我的 GWT 应用程序中,我有第 3 方反应模块 我需要将 success/failure 回调从 java 脚本传递到 java,我将在其中填充数据

JS 部分

function() {
        var reactCallback = {
            success: function() {
                console.log('success!');
            },
            error: function() {
                console.log('error!');
            }
        };
        window.reactRpcService(reactCallback);
    }

JAVA GWT 部分

 public static native void reactRPCService(ReactRPCServiceAccessor reactRpc)/*-{
    $wnd.reactRpcService = function(callback){
        reactRpc.@com.myproject.ReactRPCServiceAccessor::dispatchRPCRequest(???)(callback);
    }
}-*/;


    private void dispatchRPCRequest(???) {

    }

计划调用 java GWT RPC 函数规范化数据并通过回调将其发送回 javascript 我想在 Java 中以 JavascriptObject 的形式传递它,但不知道这是否是一个好方法

大家有什么想法吗?

实际上我发现 JavascriptObject 根据 javadocs 可以是 passed back into JSNI from Java becomes the original object, and can be accessed in JavaScript as expected.

所以在我的原生函数中我添加了这样的签名

public static native void setupNativeRactRPCServiceCalls(ReactRPCServiceAccessor reactRpc)/*-{
    $wnd.reactRpcService = function(callback){
        reactRpc.@com.myproject.ReactRPCServiceAccessor::dispatchRPCRequest(Lcom/google/gwt/core/client/JavaScriptObject;)(callback);
    }
}-*/;

 private void dispatchRPCRequest(final JavaScriptObject callback ) {
...retrieve JSON data
}

然后在从服务器检索数据后我将其传递回 javascript

   public static native void reactDataRedirector(JavaScriptObject callbackObject, String jsonData)/*-{
        callbackObject.success(jsonData);
}-*/;