GWT JSNI是否支持回调?

fae*_*anj 19 gwt jsni

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

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

Jas*_*all 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);
}-*/;
Run Code Online (Sandbox Code Playgroud)

要记住两件事:

  1. $entry() 提醒GWT在使用调试器时跟踪代码.
  2. var self = this保持对this函数内部的引用- 否则this将是函数本身...

  • 你应该在方法名之前有:: self.@ com.your.package.AClass :: aMethod(Ljava/lang/String;)(val); (5认同)