19

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

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

4

1 回答 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将是函数本身...
于 2010-07-28T20:23:53.857 回答