【问题标题】:Does GWT JSNI support callbacks?GWT JSNI 是否支持回调?
【发布时间】:2010-07-28 20:11:16
【问题描述】:

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

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

【问题讨论】:

    标签: gwt jsni


    【解决方案1】:

    是的,确实如此:

    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 将是函数本身...

    【讨论】:

    • 方法名前应该有:: self.@com.your.package.AClass::aMethod(Ljava/lang/String;)(val);
    • 这是javascript方法还是java方法? javascript 没有“私有静态”,java 没有“var”。
    • @ClickUpvote 这是一个 GWT 原生方法,让您可以在 GWT Java 代码中编写原生 JS。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多