在GWT中是否可以将java方法的引用传递给javascript
我正试图通过将VKthread与GWT结合使用,在客户端实现多线程 我的问题是,我需要在java脚本中将java方法的引用传递给线程调用程序,以便在执行线程时调用java方法 这是我的密码:在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
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);
});