简体   繁体   English

如何使用GWT的JSNI将函数指针传递给javascript函数?

[英]How do I pass a function pointer to a javascript function using GWT's JSNI?

I've used the JSNI before but I've never had to pass a function pointer as a parameter using it and I'm not sure how to do this. 我之前使用过JSNI,但我从来没有使用它将函数指针作为参数传递,我不知道如何做到这一点。 Any help is appreciated! 任何帮助表示赞赏!

You should be able to pass a JavaScriptObject that represents a JavaScript function object. 您应该能够传递一个JavaScriptObject表示一个JavaScript函数对象。 I don't think you can do anything with Java functions, though. 但是,我不认为你可以用Java函数做任何事情。 So for example you could: 例如,您可以:

final native JavaScriptObjet myFuncCreator() /*-{
    return function (x, y) { return y - x; };
}-*/

final native int myFuncUser(JavaScriptObject funcObj, int a, int b) /*-{
    return funcObj(a,b);
}-*/

Admittedly, I didn't try this code but I believe it should work. 不可否认,我没有尝试这个代码,但我相信它应该可行。

Along the same lines as sinelaw's answer, here's a way to get a callback. 与sinelaw的回答一样,这是一种获得回调的方法。

static final native JavaScriptObject createFunction(final Runnable runnable)
/*-{
    return function() {
        runnable.@java.lang.Runnable::run()();
    }
}-*/

static final void registerOnClickCallback(Element element, final Runnable runnable) {
    JavaScriptObject callback = createFunction(runnable);
    _registerOnClickCallback(element, callback);
}

static final native void _registerOnClickCallback(Element element, JavaScriptObject callback)
/*-{
    element.onclick = callback;
}-*/

Hope this helps! 希望这可以帮助!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM