GWT JSNI支持回调吗?

19

我正在构建一个使用Web SQL本地存储 (http://dev.w3.org/html5/webdatabase/) 的GWT应用程序。问题在于Web SQL API使用回调函数作为参数。

是否可以将“Java”回调传递给JSNI?

1个回答

22

是的,它可以:

private static native void doThingWithCallback() /*-{
  var self = this;
  var callbackFn = $entry(function(val) {
    self.@com.your.package.AClass.aMethod(Ljava/lang/String;)(val);
  });
  $wnd.someApiThatTakesACallback(callbackFn);
}-*/;

需要记住的两件事:

  1. $entry()会提醒GWT在使用调试器时跟踪代码。
  2. var self = this可以在函数内保持对this的引用,否则this将指向该函数本身...

5
在方法名之前应该加上::,指定命名空间:self.@com.your.package.AClass::aMethod(Ljava/lang/String;)(val); - AmanicA
这是一个 JavaScript 方法还是一个 Java 方法?JavaScript 没有 'private static',而 Java 没有 'var'。 - Ali
1
@ClickUpvote是GWT的本地方法,它可以让你在GWT Java代码中编写原生JS。 - Jason Hall

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接