在GWT中是否可以将java方法的引用传递给javascript

在GWT中是否可以将java方法的引用传递给javascript,javascript,java,multithreading,gwt,Javascript,Java,Multithreading,Gwt,我正试图通过将VKthread与GWT结合使用,在客户端实现多线程 我的问题是,我需要在java脚本中将java方法的引用传递给线程调用程序,以便在执行线程时调用java方法 这是我的密码: static JavaScriptObject sum() { return flipName(); } static native JavaScriptObject flipName() /*-{ console.log("asd"); }-*/; native String Ex

我正试图通过将VKthread与GWT结合使用,在客户端实现多线程

我的问题是,我需要在java脚本中将java方法的引用传递给线程调用程序,以便在执行线程时调用java方法

这是我的密码:

static JavaScriptObject sum() {

    return flipName();
}

static native JavaScriptObject flipName() /*-{
    console.log("asd");
}-*/;


native String Excec() /*-{

    $wnd.vkthread
            .exec(
                    @com.tradeos.b2b.industries.freight.data.freightTrade.marketplace.builders.client.MarketPlaceQuoteResultsPanel::sum()(), //function to execute in a threads
                    [], //arguments for the function
                    function(data) { // callback function;
                        var foo = data;
                        console.log(foo);
                    });

}-*/;

如果我将一个javascript方法传递给$wnd.vkthread,它工作得很好,但当尝试传递java方法时,它不工作

您需要导出您的方法:

public static native void exportStaticMethod() /*-{
       $wnd.sum =
           $entry(@com.tradeos.b2b.industries.freight.data.freightTrade.marketplace.builders.client.MarketPlaceQuoteResultsPanel::sum());
}-*/;
现在,您可以使用$wnd.sum代替Java方法,如果您计划在多个地方调用它,这将非常方便

如果只使用一次,只需在JSNI方法中将其直接包装到$entry()中即可

文件对此进行了解释:

在代码段中,您正在调用您的方法(
::sum()
),若要获取对该方法的引用,请删除最后一对括号。您还应该将其包装到
$entry

$wnd.vkthread
        .exec(
                $entry(@com.tradeos.b2b.industries.freight.data.freightTrade.marketplace.builders.client.MarketPlaceQuoteResultsPanel::sum()), //function to execute in a threads
                [], //arguments for the function
                function(data) { // callback function;
                    var foo = data;
                    console.log(foo);
                });