Search code examples
gwtjsni

Does GWT JSNI support callbacks?


I am building a GWT app that uses Web SQL Local Storage ( http://dev.w3.org/html5/webdatabase/ ). The problem is that the Web SQL API uses callback functions as arguments.

Is it possible to pass "Java" callbacks to JSNI?


Solution

  • Yes, it does:

    private static native void doThingWithCallback() /*-{
      var self = this;
      var callbackFn = $entry(function(val) {
        [email protected](Ljava/lang/String;)(val);
      });
      $wnd.someApiThatTakesACallback(callbackFn);
    }-*/;
    

    Two things to remember:

    1. $entry() reminds GWT to keep track of the code when using the debugger.
    2. var self = this keeps the reference to this inside the function -- otherwise this will be the function itself...