2010-07-28 4 views
17

Я создаю приложение GWT, которое использует локальное хранилище Web SQL ( http://dev.w3.org/html5/webdatabase/). Проблема заключается в том, что API веб-SQL использует функции обратного вызова как аргументы .Поддерживает ли GWT JSNI обратные вызовы?

Можно ли передавать «Java» обратные вызовы JSNI?

ответ

21

Да, это делает:

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

Две вещи, чтобы помнить:

  1. $entry() напоминает GWT следить кода при использовании отладчика.
  2. var self = this сохраняет ссылку на this внутри функции - в противном случае this будет сама функция ...
+4

Вы должны иметь :: перед именем метода.: Самосовершенствование @ com.your.package. AClass :: aMethod (Ljava/языки/String;) (значение); – AmanicA

+0

- это метод javascript или java-метод? javascript не имеет «private static», а java не имеет «var». –

+1

@ClickUpvote - это собственный метод GWT, который позволит вам написать собственный JS в вашем коде Java GWT. –

Смежные вопросы