我正在构建一个使用Web SQL本地存储 (http://dev.w3.org/html5/webdatabase/) 的GWT应用程序。问题在于Web SQL API使用回调函数作为参数。
是否可以将“Java”回调传递给JSNI?
我正在构建一个使用Web SQL本地存储 (http://dev.w3.org/html5/webdatabase/) 的GWT应用程序。问题在于Web SQL API使用回调函数作为参数。
是否可以将“Java”回调传递给JSNI?
是的,它可以:
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);
}-*/;
需要记住的两件事:
$entry()
会提醒GWT在使用调试器时跟踪代码。var self = this
可以在函数内保持对this
的引用,否则this
将指向该函数本身...